[Driver] Gnu.cpp: fix libstdc++ search path for multilib
With this change, on Debian x86-64 (with a MULTILIB_OSDIRNAMES local patch ../lib64 -> ../lib; this does not matter because /usr/lib64/crt{1,i,n}.o do not exist), `clang++ --target=aarch64-linux-gnu a.cc -Wl,--dynamic-linker=/usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 -Wl,-rpath,/usr/aarch64-linux-gnu/lib` built executable can run under qemu-user. Previously this failed with `/usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../include/c++/10/iostream:38:10: fatal error: 'bits/c++config.h' file not found` On Arch Linux, due to the MULTILIB_OSDIRNAMES patch and the existence of /usr/lib64/crt{1,i,n}.o, clang driver may pick /usr/lib64/crt{1,i,n}.o and cause a linker error. -B can work around the problem. `clang++ --target=aarch64-linux-gnu -B /usr/aarch64-linux-gnu/lib a.cc -Wl,--dynamic-linker=/usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 -Wl,-rpath,/usr/aarch64-linux-gnu/lib64:/usr/aarch64-linux-gnu/lib`
Loading
Please sign in to comment