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

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

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

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

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

Средства кросс-компиляции

Указание цели

Скрипт `configure' по умолчанию считает, что цель и хост — это одно и то же. Так это и есть в большинстве случаев. Так, например, работает нативный компилятор в отличие от кросс-компилятора.

Если вы хотите собрать какое-то средство кросс-компиляции, вы можете указать цель явно с помощью опции `--target' при запуске `configure'. Аргументом для `--target' является имя конфигурации той системы, для которой вы генерируете код. Читайте главу Имена конфигурации.

Например, собирая утилиты, которые будут генерировать код для встраиваемой системы MIPS ELF, вы должны использовать `--target mips-elf'.

Использование типа цели

Когда `configure.in' пишется для кросс-компиляции, вы должны использовать информацию о цели. Чтобы иметь возможность это сделать, поместите `AC_CANONICAL_SYSTEM' в `configure.in'.

`AC_CANONICAL_SYSTEM' читает опцию `--target' и каноникализирует её с помощью шелл-скрипта `config.sub'. Кроме того он запускает `AC_CANONICAL_HOST' (смотрите раздел Использование типа хоста).

Тип цели должен быть описан в следующих переменных шелл. Заметим, что хостовые версии этих переменных также будут определяться с помощью `AC_CANONICAL_HOST':

`target'
Каноническое имя конфигурации цели.
`target_alias'
Это — аргумент опции `--target'. Если пользователь не указывает опцию `--target', это будет то же самое, что и `host_alias'.
`target_cpu'
`target_vendor'
`target_os'
Первые три части канонического имени конфигурации.

Заметим, что если строки `host' и `target' совпадают, значит вы имеете дело с нативной конфигурацией. Если же они различны, то вы имеете дело с кросс-компиляцией.

Вероятно, может случиться и так что `host' и `target' представляют одну и ту же систему, но не являются идентичными строками. Например, если `config.guess' возвращает `sparc-sun-sunos4.1.4', а кто-то производит конфигурирование с `--target sparc-sun-sunos4.1', то небольшое различие между двумя версиями SunOS может оказаться несущественным для ваших утилит. Однако в общем случае весьма сложно определить, являются ли различия между двумя именами конфигурации значимыми или нет. Тем более что по умолчанию, если пользователь указывает опцию `--target' и не указывает опцию `--host', то предполагается, что пользователь желает сконфигурировать средство кросс-компиляции.

Переменные `target' и `target_alias' должны обрабатываться различно.

В общем, всякий раз когда пользователь может видеть строку, следует использовать `target_alias'. Последний может включать в себя все, что есть в файловой системе, — имя директории или часть названия утилиты. Он также включает любое средство вывода, если оно явно помечено как каноническое имя конфигурации цели. Это позволяет пользователю использовать опцию `--target' для задания того, как данное средство предстанет перед миром.

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

По соглашению, кросс-средства инсталлируются с префиксом, который используется в качестве аргумента для опции `--target'. Этот аргумент доступен также как `target_alias' (смотрите раздел Использование типа цели). Если пользователь не использует опцию `--target', и сборка осуществляется нативными средствами, префикс не используется.

Например, если gcc сконфигурирован с `--target mips-elf', то установленный бинарник будет называться `mips-elf-gcc'. Если же gcc сконфигурирован без опции `--target', то инсталлированный бинарник будет называться просто `gcc'.

Обрабатывать это для вас предназначен макрос `AC_ARG_PROGRAM' для autoconf. Если вы используете automake, нет нужды что-либо делать, программы будут автоматически устанавливаться с корректными префиксами. В противном случае об `AC_ARG_PROGRAM' читайте документацию по autoconf.


Назад Вперед
Средства кросс-компиляции Кросс-инструменты в дереве Cygnus

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


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

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

Последнее редактирование: 2011-12-17 07:08:02

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

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

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

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


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