Como faço para compilar C ++ com Clang?

97

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 ++?

pitônico
fonte

Respostas:

148

O comando clangé para C e o comando clang++é para C ++.

adl
fonte
48

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 ++

Kim Gräsman
fonte
4
Eu tive um erro de vinculador com clang -x c ++ ao compilar o arquivo cpp com #include <iostream>. O sinalizador -lstdc ++ resolveu esse problema.
Eslavo,
1
Agora tenho o código-fonte do Clang diante dos meus olhos. Durante a compilação (no Windows), ele primeiro compila 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.
Serge Rogatch
Como uma nota, a opção -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
Anúncio N
Isso é muito limitado para ser realmente útil, a menos que você construa tudo a partir do código-fonte. É melhor apenas usar 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.
Sahsahae
47

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.

jdhao
fonte
4
Obrigado por realmente responder à pergunta.
Curyous
4

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:".

Guy Adini
fonte
0

solução 1:

  clang++ your.cpp

solução 2:

  clang your.cpp -lstdc++

solução 3:

   clang -x c++ your.cpp 
ligando
fonte