Respuestas:
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 ++
clang.exey 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-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:
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.ccpara compilar el programa. Producirá un archivo ejecutable predeterminado llamado a.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.
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.