Вот кросс-компилируем мы программу. Скажем, coreutils.
У нас есть build-host
, у нас есть target-host
. Соответственно, у нас есть gcc
, скомпилированный с --host=build-host --target=target-host
.
Распаковали мы исходники coreutils, на build-host
. На нем же запускаем:
./configure --build=build-host --host=target-host.
То есть запускаем в «cross compile-режиме».
Он пишет, например: найдена библиотека libcap
. Ну да, AC_CHECK_LIB
отрабатывает! Но происходит-то это на build-host
!
В итоге, на своей LFS-сборке, запускаемой в QEMU, при старте ls
не находится библиотека libcap.so.6
. Правильно, она была на build-host
, но проверять-то ее (shared-библиотеку!) надо было на target-host?
Я понимаю, что надо флагом --without-libcap
эту библиотеку отключить. Но меня сама концепция смущает: почему ./configure
, в режиме «cross compile», запускает AC_CHECK_LIB
не на target-host
?
Казалось бы, должен быть ключ --target-root=
, но… --with-sysroot=
, вроде, только у GCC…
Я правильно рассуждаю? Спасибо!