Respostas:
Além disso, para a posteridade - o Clang (como o GCC) aceita a -xopçã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 clange clang++bem: Diferença entre clang e clang ++
clang.exee, em seguida, copia o executável para o clang++.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-argde tinido-arrumado , para forçá-lo para o tratamento de um ficheiro contendo .h como C ++, em vez de C
clang++e permitir que ele detecte os tipos de arquivos que você fornece. Quando um projeto pode conter .cpparquivos, .llarquivos (llvm IR) e .o, .a, .soe 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:
clang++ -Wall -std=c++11 test.cc -o test
Se compilado corretamente, ele produzirá o arquivo executável teste você pode executar o arquivo usando ./test.
Ou você pode apenas usar clang++ test.ccpara compilar o programa. Ele produzirá um arquivo executável padrão chamado a.out. Use ./a.outpara 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 -Wallopção. Esta página mostra uma lista de sinalizadores de diagnóstico suportados pelo Clang.
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>e clang++ -v <filename.cpp>, em "#include <...> a pesquisa começa aqui:".
#include <iostream>. O sinalizador -lstdc ++ resolveu esse problema.