В настоящее время мы разрабатываем приложение для встроенной системы ARM, работающей под управлением полной ОС Linux (NVIDIA Jetson TX2).У меня есть копия rootfs из встроенной системы, а также набор инструментов GNU для ARM версии 8.2-2018.08.У меня возникают проблемы с получением компилятором 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
, которая содержит дополнительные include и библиотеки, и именно они действительно нужны.Например, вместо библиотек, находящихся в $rootfs/usr/lib
или $rootfs/usr/local/lib
, вместо библиотек в $rootfs/usr/lib/aarch64-linux-gnu
, которые я тестировал, и используя команды -I / -L, я могу получить проект для компиляции.
У меня следующие вопросы
- Использует ли -I и -L "правильный" способ сделать это?Если нет, что это такое?
- Почему linux помещает эти библиотеки в этот другой каталог?
- При компиляции с использованием --sysroot я вижу, что проверяются другие каталоги, не связанные с sysroot.Зачем gcc делать это?