Для архитектуры AArch64
Для сборки кросс-компилятора вам нужно задать несколько переменных, которые будут зависеть от того, для какого оборудования вы хотите собрать LFA. Вам нужно выбрать триплет для целевой архитектуры, архитектуру процессора и т.д. Для выбора нужных значений пользуйтесь приведёнными на данной странице таблицами.
Установите триплеты для хоста и целевой машины:
export LFA_HOST=$(echo ${MACHTYPE} | sed "s/-[^-]*/-cross/")
export LFA_TGT="aarch64-linux-musleabihf"
Немного про
LFA_TGT
.Переменная окружения
LFA_TGT
хранит в себе значение триплета для целевой машины. Триплет принимает тип целевой машины, состоящий из следующих элементов:<CPU>-<Vendor>-<KERNEL>-<OS>
. Поскольку поле<Vendor>
часто не имеет значения, многие системы сборки (такие как, например, система сборки на основеautoconf
, используемая всеми или практически всеми пакетами из LFA) позволяют его опустить.Проницательный читатель LFA может задаться вопросом, почему мы применяем понятие «триплет» к четырёхкомпонентному имени. Компоненты
<Kernel>
и<OS>
начинались как единое поле<System>
. Такая форма применяется для многих ОС, например,x86_64-unknown-freebsd
. Но две системы могут иметь одно и то же ядро, но быть слишком разными, чтобы использовать для них один и тот же триплет. Например, система Android, работающая на мобильном устройстве, полностью отличается от системы PostmarketOS, хотя обе они имеют одно и то же ядро Linux, запускаются на том же процессоре и, возможно, даже на одном и том же мобильном устройстве. Что и говорить — одна и та же система, имеющая одно и то же ядро, запускающаяся на одном и том же компьютере, но имеющая разные стандартные библиотеки C (например, первая система используетglibc
, а вторая —musl
), не могут иметь одинаковый триплет.Поэтому поле
<System>
было разделено на поля<Kernel>
и<OS>
, чтобы однозначно обозначить различные вариации систем. В нашем примере система Android имеет триплетaarch64-unknown-linux-android
, а система PostmarketOS —aarch64-linux-musleabihf
. Ну а слово «триплет» до сих пор осталось в профессиональном лексиконе.
Выберите архитектуру, для которой будете собирать систему:
export LFA_ARCH="архитектура"
ARCH | ARCH | ARCH | ARCH |
---|---|---|---|
armv8-a | armv8-m | armv8 | armv8-r |
armv8.1-a | armv8.1-m | armv8.1-r |
Например, для процессоров Cortex-A53 $LFA_ARCH="armv8-a"
.
Запишите эти переменные в ~/.bashrc
, чтобы не вводить их значения каждый раз после входа от имени пользователя lfa
:
cat >> ~/.bashrc << EOF
export LFA_HOST="$LFA_HOST"
export LFA_TGT="$LFA_TGT"
export LFA_ARCH="$LFA_ARCH"
EOF
Далее и на протяжении всего руководства, если вы собираете систему для AArch64, то не используйте переменные окружения $LFA_FLOAT
и $LFA_FPU
, а также пропускайте при вводе команд строки, содержащие эти переменные окружения. Например, если вы собираете систему для AArch64, то скрипту configure
не следует передавать эти аргументы:
--with-float=$LFA_FLOAT \
--with-fpu=$LFA_FPU