Skip to content

cross-compiler 8.2.0 doesn't have {sysroot}/usr/include in its header search path #3

@avilleret

Description

@avilleret

with your 8.2.0 compiler I got :

$ echo | LANG=en_US.UTF-8 arm-linux-gnueabihf-gcc --sysroot=/home/antoine/dev/ofnode/sysroot -E -Wp,-v -
ignoring nonexistent directory "/opt/cross-pi-gcc-8.2.0/bin/../lib/gcc/arm-linux-gnueabihf/8.2.0/../../../../arm-linux-gnueabihf/sys-include"
ignoring duplicate directory "/opt/cross-pi-gcc-8.2.0/bin/../lib/gcc/../../lib/gcc/arm-linux-gnueabihf/8.2.0/include"
ignoring duplicate directory "/opt/cross-pi-gcc-8.2.0/bin/../lib/gcc/../../lib/gcc/arm-linux-gnueabihf/8.2.0/include-fixed"
ignoring nonexistent directory "/opt/cross-pi-gcc-8.2.0/bin/../lib/gcc/../../lib/gcc/arm-linux-gnueabihf/8.2.0/../../../../arm-linux-gnueabihf/sys-include"
ignoring duplicate directory "/opt/cross-pi-gcc-8.2.0/bin/../lib/gcc/../../lib/gcc/arm-linux-gnueabihf/8.2.0/../../../../arm-linux-gnueabihf/include"
#include "..." search starts here:
#include <...> search starts here:
 /opt/cross-pi-gcc-8.2.0/bin/../lib/gcc/arm-linux-gnueabihf/8.2.0/include
 /opt/cross-pi-gcc-8.2.0/bin/../lib/gcc/arm-linux-gnueabihf/8.2.0/include-fixed
 /opt/cross-pi-gcc-8.2.0/bin/../lib/gcc/arm-linux-gnueabihf/8.2.0/../../../../arm-linux-gnueabihf/include
End of search list.
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 31 "<command-line>"
# 1 "/opt/cross-pi-gcc-8.2.0/arm-linux-gnueabihf/include/stdc-predef.h" 1 3
# 32 "<command-line>" 2
# 1 "<stdin>"

while with the 8.1.0 I installed from archlinux repo I have :

$  echo | arm-linux-gnueabihf-gcc --sysroot=~/dev/ofnode/sysroot -E -Wp,-v -
ignoring nonexistent directory "~/dev/ofnode/sysroot/usr/arm-linux-gnueabihf/include"
ignoring nonexistent directory "~/dev/ofnode/sysroot/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/arm-linux-gnueabihf/8.1.0/include
 /usr/lib/gcc/arm-linux-gnueabihf/8.1.0/include-fixed
 /usr/lib/gcc/arm-linux-gnueabihf/8.1.0/../../../../arm-linux-gnueabihf/include
End of search list.
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 31 "<command-line>"
# 1 "/usr/arm-linux-gnueabihf/include/stdc-predef.h" 1 3
# 32 "<command-line>" 2
# 1 "<stdin>"
[antoine@antoine-pc ~]$  echo | arm-linux-gnueabihf-gcc --sysroot=/home/antoine/dev/ofnode/sysroot -E -Wp,-v -
ignoring nonexistent directory "/home/antoine/dev/ofnode/sysroot/usr/arm-linux-gnueabihf/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/arm-linux-gnueabihf/8.1.0/include
 /usr/lib/gcc/arm-linux-gnueabihf/8.1.0/include-fixed
 /usr/lib/gcc/arm-linux-gnueabihf/8.1.0/../../../../arm-linux-gnueabihf/include
 /home/antoine/dev/ofnode/sysroot/usr/include
End of search list.
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 31 "<command-line>"
# 1 "/usr/arm-linux-gnueabihf/include/stdc-predef.h" 1 3
# 32 "<command-line>" 2
# 1 "<stdin>"

Please note that in the second case, #include <...> search starts here: lists /home/antoine/dev/ofnode/sysroot/usr/include while the first (8.2.0) doesn't.

While I can manually add the include path with a -I flag, it makes this compiler hard to use with CMake which strips off "${CMAKE_SYSROOT}/usr/include".
see related issue here : https://gitlab.kitware.com/cmake/cmake/issues/17966

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions