./configure --host=${CROSS_COMPILE_HOST} ...
Трябва да зададете както --build
, така и --host
задължения за грешка в Autoconf. Ако приемем, че изграждате за ARMv7l, нещо като:
./configure --host=$(config.guess) --build=armv7l-unknown-linux-gnueabihf
Следното изглежда добре за мен, ако приемем, че /home/xport/usr/local/lib/pkgconfig
е валидно и /home/xport/usr/local
е местоположението на include/
и lib/
файловете за арката.
export PKG_CONFIG_PATH="/home/xport/usr/local/lib/pkgconfig"
Не съм сигурен какво следва. Освен това липсва --build
. И аз съм свикнал да виждам --sysroot
при кръстосано компилиране:
./configure --host=${CROSS_COMPILE_HOST} \
--enable-lib64=no --without-kernel-modules --without-pam --disable-vgauth \
--without-x --without-gtk3 --without-gtk2 --without-gtkmm3 --without-gtkmm \
--enable-resolutionkms=no --enable-deploypkg=no
CFLAGS
и CXXFLAGS
вероятно трябва да включват --sysroot
. Може би нещо като:
./configure --host=$(config.guess) --build=armv7l-unknown-linux-gnueabihf \
--sysroot="/home/xport/usr/local" --enable-lib64=no --without-kernel-modules ...
Or:
CFLAGS="--sysroot=/home/xport/usr/local" \
CXXFLAGS="--sysroot=/home/xport/usr/local" \
./configure --host=$(config.guess) --build=armv7l-unknown-linux-gnueabihf \
--enable-lib64=no --without-kernel-modules ...
DESTDIR
е предназначен за постановка. Това изглежда добре:
make install DESTDIR=/home/xport/
Ако възнамерявате да стартирате от директорията /home/xport/
, трябва да обмислите добавянето на следното към LDFLAGS
:
# 64-bit Fedora
-Wl,--enable-new-dtags -Wl,-R,'$$ORIGIN/../lib64'
# Most others
-Wl,--enable-new-dtags -Wl,-R,'$$ORIGIN/../lib'
Така че може би нещо като:
CFLAGS="--sysroot=/home/xport/usr/local" \
CXXFLAGS="--sysroot=/home/xport/usr/local" \
LDFLAGS="-Wl,--enable-new-dtags -Wl,-R,'$$ORIGIN/../lib'" \
./configure --host=$(config.guess) --build=armv7l-unknown-linux-gnueabihf \
--enable-lib64=no --without-kernel-modules ...
Базираните на $ORIGIN
пътища за изпълнение са това, което прави поетапните инсталации с DESTDIR
да работят.
Двойният знак за долар в $$ORIGIN
се дължи на Makefiles. Двойният знак за долар е начинът да избегнете знака за долар, така че той да премине правилно през make-файла.
Вижте също Как да включите правилно -Wl,-rpath,$ORIGIN аргумент за свързване в Makefile?
config.guess
ви предоставя вашия триплет Autoconf:
$ /usr/share/libtool/build-aux/config.guess
x86_64-pc-linux-gnu
Ако нямате config.guess
on-path, проверете за него в /usr/share
:
$ find /usr/share -name config.guess
/usr/share/misc/config.guess
/usr/share/libtool/config/config.guess
/usr/share/automake-1.14/config.guess
Вижте също 2.2.8 Крос-компилация в ръководството на Autoconf :
Кръстосаното компилиране означава да се изгради на една платформа двоичен файл, който ще работи на друга платформа. Когато говорим за кръстосана компилация, важно е да се прави разлика между платформата за компилиране, на която се извършва компилацията, и хост платформата, на която се очаква да работи полученият изпълним файл. Следните опции за конфигуриране се използват за указване на всяка от тях:
--build=изграждане
Системата, върху която е изграден пакетът.
--host=хост
Системата, в която ще работят вградените програми и библиотеки.
И малко по-надолу:
Опциите --host и --build обикновено са всичко, от което се нуждаем за кръстосано компилиране. Единственото изключение е, ако пакетът, който се изгражда, сам по себе си е крос-компилатор: имаме нужда от трета опция, за да посочим неговата целева архитектура.
--target=цел
При изграждане на инструменти за компилиране: системата, за която инструментите ще създават изход.
Относно коментара „Дори не стигам до тук“:
make
make install DESTDIR=/home/xport # <-- I don't even get here
Трябва да покажете грешката при компилиране, която срещате, когато стартирате make
.
person
jww
schedule
17.12.2019
configure
, трябва да посочите целта за компилация, хостът по подразбиране ще бъде към локалната хост система. - person Some programmer dude   schedule 17.12.2019--build
, а не--target
.--target
се използва за изграждане на компилатора за арх. Много объркващо... - person jww   schedule 17.12.2019