Есть много способов сделать это. Ключевой концепцией является то, что вам нужна теневая файловая система, которая имитирует ARM, и вам нужно сообщить механизму сборки пакета, где они находятся. Существует множество вариантов дистрибутивов. LTIB основан на rpm, Yocto использует BitBake и поддерживает deb, rpm и ipkg. Также необходимо различать build tools и внедренные исполняемые файлы. Это дополнительная концепция при кросс-компиляции. Единственное, что сказано выше, это то, что Ltib, Yocto, buildroot и т. Д. Содержат теневую корневую файловую систему и место для хранения host / build двоичных файлов. Поскольку у вас есть система Debian, лучше придерживаться их инструментов.
Возможна установка с dpkg --root
. А если у вас полная среда, вы можете chroot arm_root
и затем собрать пакет с двоичными файлами хоста, но с файлами разработки ARM (заголовками и библиотеками).
Руководство по обслуживанию Debian обзор сборки пакетов Debian для случая normal . Вики-кросс-компиляция Debian использует методы chroot
и содержит ссылку на сборку с использованием пакетов sbuild
или pbuild
. Пакет schroot
очень хорош, так как позволяет создавать теневую файловую систему, не становясь пользователем root. При обучении кросс-дистрибутивной сборке очень легко уничтожить файловую систему хоста, и я настоятельно рекомендую этот метод. Еще одно ключевое отличие между maint-guide и Cross Wiki заключается в установке пакета Cross build Essentials .
sudo apt-get install build-essential crossbuild-essential-armhf
В противном случае большинствовсе то же самое, но сборка с файловой системой chroot
shadow ARM.
Вот перевод для хостов Ubuntu ... вам нужно Zenial или лучше использовать вики-метод кросс-компиляции Debian. Т.е. сборка Ubuntu x86 Bionic для Raspberry PI или аналогичная. Этот метод заботится о многих вещах для вас, особенно предотвращая повреждение файловой системы по ошибке;спасибо добрым душам в Debian.
Информация по номенклатуре очень важна,
build означает архитектуру chroot /Исполняемый файл dpkg / compiler, то есть архитектура системы build (называемая host по cmake / kernel / etc)
host означает архитектурусозданных исполняемых объектов, то есть архитектура системы host , в которой эти гостевые объекты будут выполняться (называемые целевыми или иногда создаваемыми в других местах)
target - это то, что сгенерированные исполняемые объекты будут генерировать при создании исполняемых объектов, то есть архитектура систем, на которых построены программы target их результаты для запуска (актуально только для компиляторов и аналогичных)
Люди меняют имена для одних и тех же концепций в кросс-билдинге, и это может сбивать с толку.
Дополнительная информация