Public bug reported: ## What Happens?
When cross-compiling with clang++, it isn't able to find the correct C++ headers and fails to compile. Meanwhile, arm-linux-gnueabihf-g++ compiles fine. ## Test Code test.cpp: > #include <string> > #include <cstdio> > > int main() { > std::string str = "Hello World!"; > printf("%s\n", str.c_str()); > } ## Compiling With GCC $ arm-linux-gnueabihf-g++ -o test test.cpp $ echo $? 0 $ file test test: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, BuildID[sha1]=e0b6f7f2bec2ca44794a814775f6587aecaf3c5d, for GNU/Linux 3.2.0, not stripped ## Compiling With Clang $ clang++ -target arm-linux-gnueabihf -o test test.cpp In file included from test.cpp:1: /usr/bin/../lib/gcc-cross/arm-linux-gnueabihf/10/../../../../include/c++/10/string:38:10: fatal error: 'bits/c++config.h' file not found #include <bits/c++config.h> ^~~~~~~~~~~~~~~~~~ 1 error generated. ## GCC Include Directories $ "$(arm-linux-gnueabihf-gcc -print-prog-name=cc1plus)" -v -quiet -imultiarch arm-linux-gnueabihf < /dev/null ignoring nonexistent directory "/usr/local/include/arm-linux-gnueabihf" ignoring nonexistent directory "/usr/lib/gcc-cross/arm-linux-gnueabihf/9/include-fixed" ignoring nonexistent directory "/usr/include/arm-linux-gnueabihf" #include "..." search starts here: #include <...> search starts here: /usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/include/c++/9 /usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/include/c++/9/arm-linux-gnueabihf /usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/include/c++/9/backward /usr/lib/gcc-cross/arm-linux-gnueabihf/9/include /usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/include /usr/include End of search list. ## Clang Include Directories $ clang++ -target arm-linux-gnueabihf -E -x c++ - -v < /dev/null clang version 10.0.0-4ubuntu1 Target: arm-unknown-linux-gnueabihf Thread model: posix InstalledDir: /usr/bin Found candidate GCC installation: /usr/bin/../lib/gcc-cross/arm-linux-gnueabihf/10 Found candidate GCC installation: /usr/bin/../lib/gcc-cross/arm-linux-gnueabihf/9 Found candidate GCC installation: /usr/lib/gcc-cross/arm-linux-gnueabihf/10 Found candidate GCC installation: /usr/lib/gcc-cross/arm-linux-gnueabihf/9 Selected GCC installation: /usr/bin/../lib/gcc-cross/arm-linux-gnueabihf/10 Candidate multilib: .;@m32 Selected multilib: .;@m32 (in-process) "/usr/lib/llvm-10/bin/clang" -cc1 -triple armv7-unknown-linux-gnueabihf -E -disable-free -disable-llvm-verifier -discard-value-names -main-file-name - -mrelocation-model static -mthread-model posix -mframe-pointer=all -fmath-errno -fno-rounding-math -masm-verbose -mconstructor-aliases -target-cpu generic -target-abi aapcs-linux -mfloat-abi hard -fallow-half-arguments-and-returns -dwarf-column-info -fno-split-dwarf-inlining -debugger-tuning=gdb -v -resource-dir /usr/lib/llvm-10/lib/clang/10.0.0 -internal-isystem /usr/bin/../lib/gcc-cross/arm-linux-gnueabihf/10/../../../../include/c++/10 -internal-isystem /usr/bin/../lib/gcc-cross/arm-linux-gnueabihf/10/../../../../include/arm-linux-gnueabi/c++/10 -internal-isystem /usr/bin/../lib/gcc-cross/arm-linux-gnueabihf/10/../../../../include/arm-linux-gnueabihf/c++/10 -internal-isystem /usr/bin/../lib/gcc-cross/arm-linux-gnueabihf/10/../../../../include/c++/10/backward -internal-isystem /usr/local/include -internal-isystem /usr/lib/llvm-10/lib/clang/10.0.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdeprecated-macro -fdebug-compilation-dir /home/<User>/Documents/clang-bug -ferror-limit 19 -fmessage-length 0 -fno-signed-char -fgnuc-version=4.2.1 -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -faddrsig -o - -x c++ - clang -cc1 version 10.0.0 based upon LLVM 10.0.0 default target x86_64-pc-linux-gnu ignoring nonexistent directory "/usr/bin/../lib/gcc-cross/arm-linux-gnueabihf/10/../../../../include/arm-linux-gnueabi/c++/10" ignoring nonexistent directory "/usr/bin/../lib/gcc-cross/arm-linux-gnueabihf/10/../../../../include/arm-linux-gnueabihf/c++/10" #include "..." search starts here: #include <...> search starts here: /usr/bin/../lib/gcc-cross/arm-linux-gnueabihf/10/../../../../include/c++/10 /usr/bin/../lib/gcc-cross/arm-linux-gnueabihf/10/../../../../include/c++/10/backward /usr/local/include /usr/lib/llvm-10/lib/clang/10.0.0/include /include /usr/include End of search list. # 1 "<stdin>" # 1 "<built-in>" 1 # 1 "<built-in>" 3 # 404 "<built-in>" 3 # 1 "<command line>" 1 # 1 "<built-in>" 2 # 1 "<stdin>" 2 ## System Information $ lsb_release -rd Description: Ubuntu 20.04.3 LTS Release: 20.04 ** Affects: clang (Ubuntu) Importance: Undecided Status: New ** Package changed: llvm-defaults (Ubuntu) => clang (Ubuntu) -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1950808 Title: clang++ Doesn't Select The Correct Include Directories When Cross- Compiling To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/clang/+bug/1950808/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs