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
Il comando clang
è per C e il comando clang++
è per C++.
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:".
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++
Ho avuto un errore di linker con _clang -x C++ _ quando ho compilato il file cpp con '#include
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. –
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. –
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.
No, non funziona. Dobbiamo installarlo in aggiunta? – pythonic
Ho paura che la mia sfera di cristallo sia difettosa, quindi dovresti effettivamente dirci se ci sono messaggi di errore;) –
@ user1018562 Si prega di definire "non funziona". È "comando non trovato" o un altro errore? – adl