Лучший способ структурировать каталоги include / lib для кросс-компиляции CMake? - PullRequest
1 голос
/ 14 октября 2019

У меня есть общий вопрос, который проистекает из более конкретной проблемы с кросс-компиляцией для aarch64 / ARMv8.

Во-первых, моя конкретная проблема заключается в том, что я не могу получить свою рукубинарный файл ld для связывания с объектами glibc / libc.

example_path / aarch64-linux-gnu / bin / ld: не может найти crt1.o: Нет такого файла или каталога

Я полагаю, потому что это .o, Я, вероятно, должен использовать тот из моей целевой платформы вместо моего хоста. Поэтому я скопировал sysroot со своей целевой платформы (без bin, просто /usr/include и /usr/lib), и я добавил это в каталог в моей рабочей области с именем aarch64. Теперь, в моем файле toolchain.cmake, я установил это, потому что я не хочу использовать библиотеки или заголовки x86-64:

SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_SYSROOT /usr/bin/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu)

Поскольку CMAKE_FIND_ROOT_PATH_MODE_LIBRARY отправляется на ONLYCMake должен игнорировать обычные пути к библиотекам. Так что это привело к моему общему вопросу:

Каков наилучший / наиболее распространенный способ структурирования каталогов и т. Д. Для кросс-компиляции? Очевидно, я не хочу помещать sysroot моей цели в /usr/..., но мне нужно иметь возможность связываться с sysroot ARM для всех установленных там библиотек. Это так же просто, как использовать:

link_directories(...)

в файле набора инструментов? Где люди обычно хранят sysroot? Спасибо за ваше время и извинения, если это простой вопрос - я новичок в кросс-компиляции.

...