Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru

Система конфигурирования и сборки GNU

Система конфигурирования и сборки GNU

Иан Ланс Тейлор

Канадский крест

Система конфигурирования и сборки GNU позволяет собирать программы, которые запускаются на системе, отличной от той, на которой собирались необходимые средства. Иными словами, она поддерживает сборку программ с помощью кросс-компилятора.

Это называется канадским крестом.

Пример канадского креста

Приведем пример канадского креста.

На GNU/Linux вы можете собрать программу, которая будет запускаться на системе Solaris. Для сборки этой программы вы должны использовать GNU/Linux кросс-Solaris компилятор.

Конечно, вы не можете запустить результирующую программу на вашей системе GNU/Linux. Вы должны скопировать ее на систему Solaris перед тем как запустить.

Конечно, вы можете просто собрать программы на самой системе Solaris. Однако система Solaris может быть недоступна по каким-то причинам. Может быть в данный момент ее у вас нет, но вы хотите собрать нужные утилиты для кого-то, кто будет их использовать. Или, может быть, ваша система GNU/Linux значительно быстрее, чем ваша система Solaris.

Сборка канадским крестом часто используется при создании программ, предназначенных работать на не-Unix системах, таких как DOS или Windows. Их конфигурирование и сборка на Unix-системе может оказаться проще, чем поддержка конфигурирования на не-Unix системе.

Идеи канадского креста

В сборке методом канадского креста участвуют, как минимум, две различные системы: система, на которой собираются нужные средства, и система на которой эти средства будут запускаться.

Система, на которой собираются необходимые средства, называется сборочной системой.

Система, на которой эти средства запускаются, называется хозяйской системой или хостом.

Например, если вы собираете программу для Solaris на системе GNU/Linux, как в предыдущем разделе, сборочной системой будет GNU/Linux, а хозяйской системой будет Solaris.

Возможно, конечно, собрать и кросс-компилятор с помощью канадского креста (т.е. собрать кросс-компилятор с помощью кросс-компилятора). В этом случае система, для которой результирующий кросс-компилятор генерирует код, называется целевой системой. (Более подробное обсуждение хозяйской и целевой систем можно найти в разделе Хост и цель).

Примером сборки кросс-компилятора с помощью канадского креста является сборка Windows кросс-MIPS ELF компилятора на системе GNU/Linux. В этом случае сборочной системой является GNU/Linux, хозяйской системой является Windows, а целевой системой является MIPS ELF.

Название «канадский крест» применяется к случаю, когда сборочная, хозяйская и целевая системы различны. Этот термин возник в то время, когда в Канаде существовало три национальные политические партии.

Сборка инструментов перекрёстного хоста

Конфигурируя программу для сборки канадским крестом, вы должны сначала собрать и установить набор кросс-средств, которые вы будете использовать для сборки программы.

Эти средства будут собирать кросс-хозяйские средства. То есть, они будут запускаться на сборочной системе и производить код для хозяйской системы.

Здесь легко запутаться в значениях сборочной и хозяйской систем. Всегда помните, что сборочная система — это та, на которой осуществляется сборка, а хозяйская система — та, где запускается результирующая программа. Следовательно, вы должны собрать кросс-хозяйский компилятор.

Вообще говоря, вы должны иметь полное кросс-окружение, чтобы осуществить сборку. Сюда обычно включается кросс-компилятор, кросс-ассемблер, а также библиотеки и подключаемые файлы для хозяйской системы.

Сборка и опции хоста

Когда вы запускаете `configure', вы должны использовать как опцию `--build', так и опцию `--host'.

Опция `--build' используется для указания имени конфигурации сборочной системы. Оно может быть найдено в результате запуска шелл-скрипта `config.guess', и по этой причине логично использовать `--build=`config.guess`'.

Опция `--host' используется для задания имени конфигурации хозяйской системы.

Как мы объясняли ранее, `config.guess' используется для задания дефолтного значения опции `--host' (смотрите раздел Использование типа хоста). Теперь обратим внимание на то, что поскольку `config.guess' возвращает тип той системы, на которой запускается, то это, естественно, идентифицирует сборочную систему. Поскольку хозяйская система обычно совпадает со сборочной системой (ведь люди обычно не собирают с помощью кросс-компилятора), то резонно использовать результат `config.guess' по умолчанию для хозяйской системы, когда опция `--host' не используется.

Может показаться, что если опция `--host' используется без опции `--build', то скрипт конфигурирования может запустить `config.guess' для определения сборочной системы и полагать, что если результат `config.guess' отличен от опции `--host', то имеет место канадский крест. Однако, по историческим причинам и установившейся практике некоторые скрипты конфигурирования лучше запускать с явно заданной опцией `--host', а не использовать дефолтное от `config.guess'. Как отмечалось ранее, часто трудно или невозможно сравнивать имена конфигураций (смотрите раздел Использование типа цели). Поэтому, существует соглашение, что если используется опция `--host', но не используется опция `--build', то сборочной системой по умолчанию считается хозяйская система.


Назад Вперед
Скрипты конфигурирования библиотек цели Канадский крест вне и в дереве Cygnus

Перевод: Дмитрий Скоробогатов, 20.12.2011.
Оригинальный текст можно найти по адресу http://www.airs.com/ian/configure/configure_6.html.


Предыдущие публикации:

Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2014-07-09 12:49:28

Метки материала: gnu, канадский крест, система конфигурирования, система конфигурирования и сборки, компиляция, проект gnu, по, бесплатное по, софт, разработка по, soft, программное обеспечение, software, спо, документация для программиста, программное обеспечение по

Оставьте, пожалуйста, свой комментарий к публикации

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.