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?
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?
Antworten:
Für die Nachwelt akzeptiert Clang (wie GCC) den -x
Schalter, um die Sprache der Eingabedateien festzulegen, z.
$ clang -x c++ some_random_file.txt
Dieser Mailinglisten-Thread erklärt den Unterschied zwischen clang
und clang++
gut: Unterschied zwischen Clang und Clang ++
clang.exe
ausfü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.
-x c++
war sehr nützlich , da eine zu geben , -extra-arg
zu klappern-ordentlich , es zu zwingen , eine .h - Datei als die C ++ anstelle von C zu behandeln
clang++
und zu erkennen, welche Art von Dateien Sie bereitstellen. Wenn ein Projekt enthalten kann .cpp
Dateien, .ll
Dateien (llvm ir) und .o
, .a
, .so
und was keine Dateien von Drittanbieter - Bibliotheken, clang -x c++
wird nur werfen auf.
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.cc
das Programm einfach zum Kompilieren verwenden. Es wird eine ausführbare Standarddatei mit dem Namen erstellt a.out
. Verwenden Sie ./a.out
diese 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 -Wall
Option enthalten sind. Diese Seite zeigt eine Liste der von Clang unterstützten Diagnoseflags.
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:".
#include <iostream>
. -lstdc ++ Flag hat dieses Problem gelöst.