Wie kompiliere ich C ++ mit Clang?

96

Ich habe Clang mithilfe von apt-get in Ubuntu installiert und kann damit erfolgreich C-Dateien kompilieren. Ich habe jedoch keine Ahnung, wie ich C ++ damit kompilieren soll. Was muss ich tun, um C ++ zu kompilieren?

pythonisch
quelle

Antworten:

147

Der Befehl clangist für C und der Befehl clang++ist für C ++.

adl
quelle
48

Für die Nachwelt akzeptiert Clang (wie GCC) den -xSchalter, um die Sprache der Eingabedateien festzulegen, z.

$ clang -x c++ some_random_file.txt

Dieser Mailinglisten-Thread erklärt den Unterschied zwischen clangund clang++gut: Unterschied zwischen Clang und Clang ++

Kim Gräsman
quelle
4
Ich hatte einen Linker-Fehler mit clang -x c ++ beim Kompilieren der CPP-Datei mit #include <iostream>. -lstdc ++ Flag hat dieses Problem gelöst.
Slawischer
1
Ich habe jetzt den Quellcode von Clang vor Augen. Während des Builds (unter Windows) wird diese clang.exeausführbare Datei zuerst erstellt und dann kopiert clang++.exe. Es ist also dieselbe ausführbare Datei, nur zur Laufzeit überprüft sie ihren eigenen Namen, um zu unterscheiden, ob sie sich als C- oder C ++ - Compiler verhalten soll. HTH.
Serge Rogatch
Als Hinweis, die Option -x c++war sehr nützlich , da eine zu geben , -extra-argzu klappern-ordentlich , es zu zwingen , eine .h - Datei als die C ++ anstelle von C zu behandeln
Anzeige N
Dies ist zu einschränkend, um tatsächlich nützlich zu sein, es sei denn, Sie erstellen das Ganze aus dem Quellcode. Es ist besser, nur zu verwenden clang++und zu erkennen, welche Art von Dateien Sie bereitstellen. Wenn ein Projekt enthalten kann .cppDateien, .llDateien (llvm ir) und .o, .a, .sound was keine Dateien von Drittanbieter - Bibliotheken, clang -x c++wird nur werfen auf.
Sahsahae
47

Ich weiß nicht, warum es keine direkte Antwort auf das Problem gibt. Wenn Sie ein C ++ - Programm kompilieren möchten, verwenden Sie es am besten clang++. Zum Beispiel funktioniert das Folgende für mich:

clang++ -Wall -std=c++11 test.cc -o test

Bei korrekter Kompilierung wird die ausführbare Datei erstellt test, und Sie können die Datei mithilfe von ausführen ./test.

Oder Sie können clang++ test.ccdas Programm einfach zum Kompilieren verwenden. Es wird eine ausführbare Standarddatei mit dem Namen erstellt a.out. Verwenden Sie ./a.outdiese Option , um die Datei auszuführen.

Der gesamte Prozess ähnelt g ++, wenn Sie mit g ++ vertraut sind. In diesem Beitrag erfahren Sie, welche Warnungen in der -WallOption enthalten sind. Diese Seite zeigt eine Liste der von Clang unterstützten Diagnoseflags.

jdhao
quelle
4
Vielen Dank, dass Sie die Frage tatsächlich beantwortet haben.
Curyous
4

Ich hatte ein ähnliches Problem beim Erstellen von Clang aus dem Quellcode (aber nicht mit sudo apt-get install. Dies hängt möglicherweise von der Version von Ubuntu ab, die Sie ausführen).

Es kann sich lohnen zu prüfen, ob clang++die richtigen Speicherorte Ihrer C ++ - Bibliotheken gefunden werden können:

Vergleichen Sie die Ergebnisse von g++ -v <filename.cpp>und clang++ -v <filename.cpp>unter "#include <...> Suche beginnt hier:".

Guy Adini
quelle
0

Lösung 1:

  clang++ your.cpp

Lösung 2:

  clang your.cpp -lstdc++

Lösung 3:

   clang -x c++ your.cpp 
Ligand
quelle