Eu instalei o Clang usando apt-get no Ubuntu e posso compilar arquivos C usando-o com sucesso. No entanto, não tenho ideia de como compilar C ++ por meio dele. O que preciso fazer para compilar o C ++?
97
O comando clang
é para C e o comando clang++
é para C ++.
Além disso, para a posteridade - o Clang (como o GCC) aceita a -x
opção de definir o idioma dos arquivos de entrada, por exemplo,
$ clang -x c++ some_random_file.txt
Esta discussão lista de discussão explica a diferença entre clang
e clang++
bem: Diferença entre clang e clang ++
#include <iostream>
. O sinalizador -lstdc ++ resolveu esse problema.clang.exe
e, em seguida, copia o executável para oclang++.exe
. Portanto, é o mesmo executável, apenas em tempo de execução ele verifica seu próprio nome para distinguir se deve se comportar como compilador C ou C ++. HTH.-x c++
era muito útil para dar como um-extra-arg
de tinido-arrumado , para forçá-lo para o tratamento de um ficheiro contendo .h como C ++, em vez de Cclang++
e permitir que ele detecte os tipos de arquivos que você fornece. Quando um projeto pode conter.cpp
arquivos,.ll
arquivos (llvm IR) e.o
,.a
,.so
e que não os arquivos de bibliotecas de terceiros,clang -x c++
só vai vomitar.Não sei por que não há uma resposta que trate diretamente do problema. Quando você deseja compilar um programa C ++, é melhor usar
clang++
. Por exemplo, o seguinte funciona para mim:Se compilado corretamente, ele produzirá o arquivo executável
test
e você pode executar o arquivo usando./test
.Ou você pode apenas usar
clang++ test.cc
para compilar o programa. Ele produzirá um arquivo executável padrão chamadoa.out
. Use./a.out
para executar o arquivo.Todo o processo é muito parecido com o g ++ se você estiver familiarizado com o g ++. Veja esta postagem para verificar quais avisos estão incluídos na
-Wall
opção. Esta página mostra uma lista de sinalizadores de diagnóstico suportados pelo Clang.fonte
Tive um problema semelhante ao compilar o Clang a partir do código-fonte (mas não com
sudo apt-get install
. Isso pode depender da versão do Ubuntu que você está executando).Pode valer a pena verificar se
clang++
consegue encontrar os locais corretos de suas bibliotecas C ++:Compare os resultados de
g++ -v <filename.cpp>
eclang++ -v <filename.cpp>
, em "#include <...> a pesquisa começa aqui:".fonte
solução 1:
solução 2:
solução 3:
fonte