2012-02-05 25 views
66

He instalado Clang usando apt-get en Ubuntu, y puedo compilar exitosamente archivos C usándolo. Sin embargo, no tengo idea de cómo compilar C++ a través de él. ¿Qué debo hacer para compilar C++?¿Cómo compilo C++ con Clang?

Respuesta

106

El comando clang es para C, y el comando clang++ es para C++.

+0

No, no funciona. ¿Necesitamos instalarlo adicionalmente? – pythonic

+24

Me temo que mi bola de cristal está defectuosa, por lo que tendría que decirnos si hay algún mensaje de error;) –

+4

@ user1018562 Defina "no funciona". ¿Es ese 'comando no encontrado' u otro error? – adl

3

He tenido un problema similar al compilar Clang desde la fuente (pero no con sudo apt-get install. Esto podría depender de la versión de Ubuntu que esté ejecutando).

Podría valer la pena comprobar si clang++ puede encontrar la ubicación correcta de las bibliotecas de C++:

comparar los resultados de g++ -v <filename.cpp> y clang++ -v <filename.cpp>, en "# include < ...> búsqueda comienza aquí:".

38

Además, para la posteridad - Sonido metálico (como GCC) acepta el interruptor -x para establecer el idioma de los archivos de entrada, por ejemplo,

$ clang -x c++ some_random_file.txt 

Este hilo lista de correo explica la diferencia entre clangclang++ y así : Difference between clang and clang++

+2

Tuve un error de enlazador con _clang -x C++ _ cuando compilé el archivo cpp con '#include '. _-lstdC++ _ flag resolvió este problema. – Vyacheslav

+1

Ahora tengo el código fuente de Clang delante de mis ojos. Durante la compilación (en Windows), primero compila 'clang.exe', y luego copia ese ejecutable en' clang ++. Exe'. Por lo tanto, es el mismo archivo ejecutable, solo en tiempo de ejecución comprueba su propio nombre para distinguir si se debe comportar como compilador C o C++. HTH. –

+0

Como nota, la opción '-x C++' fue muy útil para dar como '-extra-arg' a * clang-tidy *, para forzarlo a considerar que un archivo .h contiene C++ en vez de C. –

7

No sé por qué no hay una respuesta que solucione directamente el problema. Cuando desee compilar el programa C++, es mejor usar clang++. Por ejemplo, las siguientes obras para mí:

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

Si compilado correctamente, se producirá el archivo ejecutable test, y se puede ejecutar el archivo utilizando ./test.

O simplemente puede usar clang++ test.cc para compilar el programa. Producirá un archivo ejecutable predeterminado llamado a.out. Use ./a.out para ejecutar el archivo.

Todo el proceso se parece mucho a g ++ si está familiarizado con g ++. Consulte this post para verificar qué advertencias se incluyen con la opción -Wall. This page muestra una lista de indicadores de diagnóstico compatibles con Clang.