clang++ Doesn't Select The Correct Include Directories When Cross-Compiling
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
llvm-defaults (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
## What Happens?
When cross-compiling with clang++, it isn't able to find the correct C++ headers and fails to compile. Meanwhile, arm-linux-
## 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-
$ echo $?
0
$ file test
test: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-
## Compiling With Clang
$ clang++ -target arm-linux-gnueabihf -o test test.cpp
In file included from test.cpp:1:
/usr/bin/
#include <bits/c++config.h>
1 error generated.
## GCC Include Directories
$ "$(arm-
ignoring nonexistent directory "/usr/local/
ignoring nonexistent directory "/usr/lib/
ignoring nonexistent directory "/usr/include/
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/
/usr/lib/
/usr/lib/
/usr/lib/
/usr/lib/
/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-
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/
Found candidate GCC installation: /usr/bin/
Found candidate GCC installation: /usr/lib/
Found candidate GCC installation: /usr/lib/
Selected GCC installation: /usr/bin/
Candidate multilib: .;@m32
Selected multilib: .;@m32
(in-process)
"/usr/
clang -cc1 version 10.0.0 based upon LLVM 10.0.0 default target x86_64-pc-linux-gnu
ignoring nonexistent directory "/usr/bin/
ignoring nonexistent directory "/usr/bin/
#include "..." search starts here:
#include <...> search starts here:
/usr/bin/
/usr/bin/
/usr/local/include
/usr/lib/
/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: | llvm-defaults (Ubuntu) → clang (Ubuntu) |
affects: | clang (Ubuntu) → llvm-defaults (Ubuntu) |