Ответ 1
Как отмечено в этом сообщении в блоге и упоминается в GCC Configure Terms, --target
применяется только при компиляции инструментальных цепей. Когда вы выполняете обычную кросс-компиляцию библиотеки или бинарного файла, вы используете
--build=the architecture of the build machine
--host=the architecture that you want the file to run on
Однако, когда вы строите инструментальные цепочки, все может усложниться. Я думаю, что следующее правильно (хотя я не могу сказать, что когда-либо вручную скомпилировал кросс-отладчик):
Предположим, что у вас есть:
- машина сборки powerpc, которую вы собираетесь делать на компиляции
- несколько встроенных устройств с процессорами mips, которые ваш код будет запущен на
- ноутбук x86, который вы собираетесь использовать для отладки этих устройств в поле
Вы настроили и построили сервер отладки (например, gdbserver) для запуска на встроенном устройстве с помощью
./configure --build=powerpc --host=mips
чтобы вы могли замаскировать ваше встроенное устройство и запустить "gdbserver: 1234 a.out", чтобы начать отладку и прослушивать порт 1234.
Затем вы создадите свой клиент для отладки (который подключается и управляет gdbserver) с помощью
./configure --build=powerpc --host=i686 --target=mips
который вы копируете на свой ноутбук x86, чтобы в поле вы могли запустить "gdbclient embedded.device: 1234", чтобы отладить вашу программу a.out.
Все это относится и к компиляторам, для которых вы можете посмотреть ссылку GCC выше или этот раздел о эта страница руководства Autoconf, целевые значения по умолчанию для хоста, хоста для сборки и сборки для результата config.guess. "
Словом, постройте код на --build
, запустите его на --host
с --target
архитектурной средой.