Комментарии 8
линковщик (в моём случае
ld.bfd
), который не умеет собирать для AArch64
Блин, а мужики-то не знают!
Спасибо за подробное описание. Немного не понял, в чём суть флага --gcc-toolchain
. Если clang компилирует сразу под целевую систему, то зачем здесь нужен gcc?
Заранее извиняюсь за скорее всего тупой вопрос, просто раньше практически не имел дела с кросс-компиляцией, но хочется попробовать собрать что-то современное под платформу Blackberry 10, где кроме gcc 4.6 ничего нет.
Это, по сути, обособленная часть sysroot.
Обычно всё в /usr/include, /usr/lib - но некоторые специфичные либы поставляются вместе с gcc. Также там некоторые объектники (crt*.o)
--gcc-toolchain=<arg>
Search for GCC installation in the specified directory on targets which commonly use GCC. The directory usually contains ‘lib{,32,64}/gcc{,-cross}/$triple’ and ‘include’. If specified, sysroot is skipped for GCC detection. Note: executables (e.g. ld) used by the compiler are not overridden by the selected GCC installation
В принципе, можно сделать тулчейн не зависящий от gcc, нужно собрать compiler-rt, libunwind, libc++, libc++abi из состава llvm. Правда, это может быть довольно хлопотно для некоторых архитектур.
Gcc тулчейн хоть и неудобен, но зато собирается под гораздо более широкий набор платформ, чем полноценный clang тулчейн.
А можно не париться и скачать zig: https://andrewkelley.me/post/zig-cc-powerful-drop-in-replacement-gcc-clang.html
Осваиваем кросс-компиляцию с помощью Clang и LLVM