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 -x
commutateur 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 clang
et 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 .cpp
fichiers, des .ll
fichiers (LLVM ir) et .o
, .a
, .so
et 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 test
et vous pouvez exécuter le fichier en utilisant ./test
.
Ou vous pouvez simplement utiliser clang++ test.cc
pour compiler le programme. Il produira un fichier exécutable par défaut nommé a.out
. Utilisez ./a.out
pour 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' -Wall
option. 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.