Вот кросс-компилируем мы программу. Скажем, 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…
Я правильно рассуждаю? Спасибо!
