我们目前正在开发一个运行完整Linux操作系统(NVIDIA Jetson TX2)的ARM嵌入式系统的应用程序 . 我有一个来自嵌入式系统的rootfs副本以及ARM版本8.2-2018.08的GNU工具链 . 我很难让GCC编译器( gcc-arm-8.2-2018.11-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc )在包含和库文件的rootfs的正确目录中查找 .

我已将-sysroot变量设置为指向sysroot的位置 . 但是,查看lib和include目录有一个子文件夹, usr/lib/aarch64-linux-gnu 包含进一步包含和库,这些实际上是所需的 . 例如,而不是位于 $rootfs/usr/lib$rootfs/usr/local/lib 中的库,而是库 $rootfs/usr/lib/aarch64-linux-gnu 我测试过并使用-I / -L命令我可以编译项目 .

我的问题如下

  • 使用-I和-L "correct"方式这样做?如果不是,那是什么?

  • 为什么linux将这些库放在这个其他目录中?

  • 使用--sysroot进行编译时,我可以看到正在检查其他非sysroot目录 . 为什么gcc会这样做?