J'ai installé Clang en utilisant apt-get dans Ubuntu, et je peux réussir à compiler des fichiers C en l'utilisant. Cependant, je ne sais pas comment compiler C ++ à travers lui. Que dois-je faire pour compiler C ++?
J'ai installé Clang en utilisant apt-get dans Ubuntu, et je peux réussir à compiler des fichiers C en l'utilisant. Cependant, je ne sais pas comment compiler C ++ à travers lui. Que dois-je faire pour compiler C ++?
Réponses:
Aussi, pour la postérité - Clang (comme GCC) accepte le -xcommutateur pour définir la langue des fichiers d'entrée, par exemple,
$ clang -x c++ some_random_file.txt
Ce fil de discussion de liste de diffusion explique la différence entre clanget clang++bien: Différence entre clang et clang ++
clang.exe, puis copie cet exécutable dans clang++.exe. C'est donc le même exécutable, juste au moment de l'exécution, il vérifie son propre nom pour distinguer s'il doit se comporter comme un compilateur C ou C ++. HTH.
-x c++a été très utile pour donner comme -extra-argà clang-propre , pour l'obliger à traiter un fichier .h comme contenant C ++ au lieu de C.
clang++et de le laisser détecter le type de fichiers que vous lui fournissez. Lorsqu'un projet peut contenir des .cppfichiers, des .llfichiers (LLVM ir) et .o, .a, .soet ce pas les fichiers de bibliothèques tierces, clang -x c++va simplement jeter.
Je ne sais pas pourquoi il n'y a pas de réponse directement au problème. Lorsque vous souhaitez compiler un programme C ++, il est préférable d'utiliser clang++. Par exemple, ce qui suit fonctionne pour moi:
clang++ -Wall -std=c++11 test.cc -o test
S'il est compilé correctement, il produira le fichier exécutable testet vous pouvez exécuter le fichier en utilisant ./test.
Ou vous pouvez simplement utiliser clang++ test.ccpour compiler le programme. Il produira un fichier exécutable par défaut nommé a.out. Utilisez ./a.outpour exécuter le fichier.
L'ensemble du processus ressemble beaucoup à g ++ si vous êtes familier avec g ++. Consultez cet article pour vérifier quels avertissements sont inclus avec l' -Walloption. Cette page affiche une liste des indicateurs de diagnostic pris en charge par Clang.
J'ai eu un problème similaire lors de la construction de Clang à partir des sources (mais pas avec sudo apt-get install. Cela peut dépendre de la version d'Ubuntu que vous utilisez).
Il peut être utile de vérifier si vous clang++pouvez trouver les emplacements corrects de vos bibliothèques C ++:
Comparez les résultats de g++ -v <filename.cpp> et clang++ -v <filename.cpp>, sous "#include <...> la recherche commence ici:".
#include <iostream>. L'indicateur -lstdc ++ a résolu ce problème.