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

Reply via email to