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 clanges para C y el comando clang++es para C ++.
Además, para la posteridad, Clang (como GCC) acepta el -xcambio 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 clangy clang++bueno: Diferencia entre clang y clang ++
#include <iostream>. -lstdc ++ flag resolvió este problema.clang.exey 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-argpara 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.cpparchivos,.llarchivos (llvm IR) y.o,.a,.soy 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.ccpara compilar el programa. Producirá un archivo ejecutable predeterminado llamadoa.out. Úselo./a.outpara 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
-Wallopció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