交叉编译 GCC 工具链找不到 stdlib.h

Crosscompilation GCC toolchain cannot find stdlib.h

我正在尝试使用我的 x86_64 PC 交叉编译 Jetson nano (aarch64)。我正在使用 toolchain provided by nvidia(64 位 BSP 的 GCC 工具链)。现在我无法找到工具链 stdlilb.h

In file included from <build dir path>/opt/ros/melodic/include/ros/time.h:53:0,
                 from <build dir path>/opt/ros/melodic/include/ros/ros.h:38,
                 from <build dir path>/src/test_cpp/src/listener.cpp:1:
<build dir path>/opt/ros/melodic/include/ros/platform.h:37:41: fatal error: stdlib.h: No such file or directory
#include <stdlib.h> // getenv, _dupenv_s
                                        ^
compilation terminated.

我的工具链在 gcc-4.8.5-aarch64/install/ 目录中。 find -name stdlib.h -type f 给我

./gcc-4.8.5-aarch64/install/aarch64-unknown-linux-gnu/sysroot/usr/include/bits/stdlib.h
./gcc-4.8.5-aarch64/install/aarch64-unknown-linux-gnu/sysroot/usr/include/stdlib.h
./gcc-4.8.5-aarch64/install/aarch64-unknown-linux-gnu/include/c++/4.8.5/tr1/stdlib.h

为什么编译器找不到stdlib?我如何向编译器显示它?


P.S. 我不想让这个问题过长。如果需要,我正在尝试做的事情的完整描述和错误解释 here in my question asked in nvidia forums

添加工具链包含目录 include_directories 解决了问题

include_directories(BEFORE SYSTEM ${MY_BUILD_DIRECTORY}/gcc-4.8.5-aarch64/install/aarch64-unknown-linux-gnu/sysroot/usr/include/)