He instalado Clang usando apt-get en Ubuntu, y puedo compilar con éxito archivos C usándolo. Sin embargo, no tengo idea de cómo compilar C ++ a través de él. ¿Qué necesito hacer para compilar C ++?
97
El comando clang
es para C y el comando clang++
es para C ++.
Además, para la posteridad, Clang (como GCC) acepta el -x
cambio para establecer el idioma de los archivos de entrada, por ejemplo,
$ clang -x c++ some_random_file.txt
Este hilo de la lista de correo explica la diferencia entre clang
y clang++
bueno: Diferencia entre clang y clang ++
#include <iostream>
. -lstdc ++ flag resolvió este problema.clang.exe
y luego copia ese ejecutable enclang++.exe
. Entonces es el mismo ejecutable, solo en tiempo de ejecución verifica su propio nombre para distinguir si se comporta como un compilador C o C ++. HTH.-x c++
era muy útil para dar como-extra-arg
para sonido metálico-ordenado , para que la fuerza para tratar un archivo .h contiene C ++ en lugar de C.clang++
y dejar que detecte qué tipo de archivos le proporcionas. Cuando un proyecto puede contener.cpp
archivos,.ll
archivos (llvm IR) y.o
,.a
,.so
y lo que no los archivos de bibliotecas de terceros,clang -x c++
se acaba de vomitar.No sé por qué no hay una respuesta que aborde directamente el problema. Cuando desee compilar un programa en C ++, es mejor usar
clang++
. Por ejemplo, lo siguiente me funciona:Si se compila correctamente, producirá el archivo ejecutable
test
, y puede ejecutar el archivo usando./test
.O simplemente puede usar
clang++ test.cc
para compilar el programa. Producirá un archivo ejecutable predeterminado llamadoa.out
. Úselo./a.out
para ejecutar el archivo.Todo el proceso es muy parecido a g ++ si está familiarizado con g ++. Vea esta publicación para verificar qué advertencias se incluyen con la
-Wall
opción. Esta página muestra una lista de indicadores de diagnóstico compatibles con Clang.fuente
Tuve 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 las ubicaciones correctas de sus bibliotecas de C ++:Compare los resultados de
g++ -v <filename.cpp>
yclang++ -v <filename.cpp>
, en "#include <...> la búsqueda comienza aquí:".fuente
solución 1:
solución 2:
solución 3:
fuente