Respuestas:
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 ++
clang.exe
y luego copia ese ejecutable en clang++.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:
clang++ -Wall -std=c++11 test.cc -o test
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 llamado a.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.
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>
y clang++ -v <filename.cpp>
, en "#include <...> la búsqueda comienza aquí:".
#include <iostream>
. -lstdc ++ flag resolvió este problema.