También me ha preocupado este problema durante mucho tiempo. Debe intentar eliminar la carpeta (cd /usr/lib/gcc/aarch64-linux-gnu/8). La razón por la que clang++ no puede funcionar es que esta carpeta no contiene libstdc++.a.
clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/aarch64-linux-gnu/5
Found candidate GCC installation: /usr/bin/../lib/gcc/aarch64-linux-gnu/5.5.0
Found candidate GCC installation: /usr/bin/../lib/gcc/aarch64-linux-gnu/6
Found candidate GCC installation: /usr/bin/../lib/gcc/aarch64-linux-gnu/6.5.0
Found candidate GCC installation: /usr/bin/../lib/gcc/aarch64-linux-gnu/7
Found candidate GCC installation: /usr/bin/../lib/gcc/aarch64-linux-gnu/7.3.0
Found candidate GCC installation: /usr/lib/gcc/aarch64-linux-gnu/5
Found candidate GCC installation: /usr/lib/gcc/aarch64-linux-gnu/5.5.0
Found candidate GCC installation: /usr/lib/gcc/aarch64-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/aarch64-linux-gnu/6.5.0
Found candidate GCC installation: /usr/lib/gcc/aarch64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/aarch64-linux-gnu/7.3.0
Selected GCC installation: /usr/bin/../lib/gcc/aarch64-linux-gnu/7.3.0
verifique todas las carpetas en /usr/lib/gcc/aarch64-linux-gnu/clang++ elegirá la última, asegúrese de que esté libstdc++.a en la última
Descubrí que clang estaba usando la instalación en /usr/lib/gcc/x86_64-linux-gnu/8
(usando clang++ -v
), y de hecho esto no contenía el archivo libstdc++.a
. En lugar de eliminar todo el directorio como lo sugiere otra respuesta, pude simplemente instalar libstdc++-8-dev
.
Estoy en Ubuntu 18.04; gcc ya estaba instalado.
En primer lugar, busque su versión (ruta):
ls /usr/include/c++/
Salida:
8
Luego agregue las rutas de inclusión y reemplace 8
con tu versión:
-I/usr/include/c++/8
-I/usr/include/x86_64-linux-gnu/c++/8
Esto funciona para mí en Linux:
clang++ -I/usr/include/c++/8 -I/usr/include/x86_64-linux-gnu/c++/8 -L /usr/lib/gcc/x86_64-linux-gnu/8 abc.cpp -o abc
También puede usar CPLUS_INCLUDE_PATH:
export CPLUS_INCLUDE_PATH=/usr/include/c++/8:/usr/include/x86_64-linux-gnu/c++/8
Entonces esto funciona:
clang++ main.cpp -o main
Ejecutar:
./main
g++ --version
Salida:
g++ (Ubuntu 8.3.0-6ubuntu1) 8.3.0
Y ver:
https://superuser.com/questions/358255/bash-environment-variable-to-include-path-of-c-libraries
¿Cómo consultar las rutas de inclusión predeterminadas de clang++?
Clang no ve encabezados básicos
https://askubuntu.com/questions/516801/clang-fails-to-compile-simple-hello-world-c-program
Espero que esto ayude a alguien.