2012-02-05 2 views
66

Ho installato Clang usando apt-get in Ubuntu e posso compilare con successo file C che lo utilizzano. Tuttavia, non ho idea di come compilare C++ attraverso di esso. Cosa devo fare per compilare C++?Come si compila C++ con Clang?

risposta

106

Il comando clang è per C e il comando clang++ è per C++.

+0

No, non funziona. Dobbiamo installarlo in aggiunta? – pythonic

+24

Ho paura che la mia sfera di cristallo sia difettosa, quindi dovresti effettivamente dirci se ci sono messaggi di errore;) –

+4

@ user1018562 Si prega di definire "non funziona". È "comando non trovato" o un altro errore? – adl

3

Ho riscontrato un problema simile durante la creazione di Clang dal sorgente (ma non con sudo apt-get install. Ciò potrebbe dipendere dalla versione di Ubuntu in esecuzione).

Potrebbe essere la pena di verificare se clang++ possono trovare le posizioni corrette dell'unità C++ librerie:

confrontare i risultati del g++ -v <filename.cpp> e clang++ -v <filename.cpp>, sotto "# include < ...> ricerca inizia qui:".

38

Inoltre, per i posteri - Clang (come GCC) accetta l'interruttore -x per impostare la lingua del file di input, ad esempio,

$ clang -x c++ some_random_file.txt 

Questo thread mailing list spiega la differenza tra clang e clang++ bene : Difference between clang and clang++

+2

Ho avuto un errore di linker con _clang -x C++ _ quando ho compilato il file cpp con '#include '. _-lstdC++ _ flag ha risolto questo problema. – Vyacheslav

+1

Ho il codice sorgente di Clang davanti ai miei occhi ora. Durante la compilazione (su Windows), prima costruisce 'clang.exe', e quindi copia tale eseguibile in' clang ++. Exe'. Quindi è lo stesso eseguibile, solo in fase di esecuzione controlla il proprio nome per distinguere se comportarsi come compilatore C o C++. HTH. –

+0

Come nota, l'opzione '-x C++' era molto utile per dare come '-extra-arg' a * clang-tidy *, per costringerlo a trattare un file .h come contenente C++ invece di C. –

7

non so il motivo per cui non c'è una risposta rivolgendosi direttamente al problema. Quando vuoi compilare il programma C++, è meglio usare clang++. Ad esempio, le seguenti opere per me:

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

Se compilato correttamente, produrrà il file eseguibile test, ed è possibile eseguire il file utilizzando ./test.

Oppure si può semplicemente utilizzare clang++ test.cc per compilare il programma. Produrrà un file eseguibile predefinito denominato a.out. Utilizzare ./a.out per eseguire il file.

L'intero processo è molto simile a g ++, se si ha familiarità con g ++. Vedere this post per controllare quali avvertenze sono incluse con l'opzione -Wall. This page mostra un elenco di flag diagnostici supportati da Clang.