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

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

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

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

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

Имена конфигурации

Система конфигурирования GNU назначает каждой системе имя конфигурации. Все такие имена составляются как триплеты (сейчас, в некоторых случаях, они могут состоять из четырёх частей), и иногда называются конфигурационными триплетами.

Определение имени конфигурации

Это — строка в форме cpu-производитель-операционная_система. В некоторых случаях она расширяется до четырех частей: cpu-производитель-ядро-операционная_система.

Когда в опциях конфигурирования указывается имя конфигурации, обычно не требуется указывать полное имя. Особенно часто опускается поле производитель, так что получается строка наподобие `i386-linux' или `sparc-sunos'. Шелл-скрипт `config.sub' сам переводит эти укороченные строки в каноническую форму. Система autoconf будет автоматически запускать `config.sub', когда это понадобится.

Имя конфигурации содержит следующие поля:

cpu
Тип процессора. Обычно это что-то вроде `i386' или `sparc'. Можно использовать и более специфичные варианты, как, например, `mipsel' для указания на процессор MIPS с прямым порядком байт.
производитель
В это поле в свободной форме вписывается что-то, указывающего на производителя системы. Часто это просто `unknown'. Другие общеупотребительные строки — это `pc' для IBM-совместимых ПК, или имя вендора рабочей станции, такое как `sun'.
операционная_система
Имя операционной системы, которая запущена на данном компьютере. Это может быть что-то вроде `solaris2.5' или `irix6.3'. К номеру версии здесь не предъявляется каких-либо требований, и потому вполне возможны строки вроде `aix4.1.4.0'. Для встраиваемых систем, которые не имеют операционной системы, это поле обычно указывает на тип формата объектного файла, такой как `elf' или `coff'.
ядро
Это используется, в основном, для GNU/Linux. Типичным именем конфигурации GNU/Linux является `i586-pc-linux-gnulibc1'. В этом случае ядро `linux' отделено от операционной системы `gnulibc1'.

Шелл-скрипт `config.guess', как правило, выводит корректное имя конфигурации для той системы, на которой запускается. Он выполняет запуск `uname', а также проверяет другие характеристики системы.

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

Использование имен конфигурации

Некоторые решения скрипт конфигурирования будет принимать с учётом имени конфигурации. Вам необходимо самостоятельно указывать его, если хотите как-то иначе компилировать код на таких системах, которые не могут быть определены стандартными средствами autoconf.

Как правило, лучше проверять специфическую функциональность, чем специфическую систему, поскольку различные Unix-ы копируют функционал один у другого. Даже если вам нужно определить наличие поддержки какой-то функциональности, присущей какому-то имени конфигурации, вам лучше определить макрос для проверки этой функциональности, вместо макроса для проверки того, является ли данная система той самой.

Проверка для специфических систем в `configure.in' обычно осуществляется с помощью оператора case. Оператор case может выглядеть аналогично нижеприведённому, если `host' — это переменная шелл, в которой хранится каноническое имя конфигурации (так оно и будет, если в `configure.in' используется макрос `AC_CANONICAL_HOST' или `AC_CANONICAL_SYSTEM').

case "${host}" in
i[3456]86-*-linux-gnu*) do something ;;
sparc*-sun-solaris2.[56789]*) do something ;;
sparc*-sun-solaris*) do something ;;
mips*-*-elf*) do something ;;
esac

Очень важно использовать `*' в поле операционной системы, куда должен писаться номер ее версии, генерируемый `config.guess'.

В большинстве случаев вы должны быть осторожны указывая диапазон типов процессора. Для большинства семейств процессоров достаточно завершающего суффикса `*', как в `mips*' выше. Для семейства i386 в настоящее время достаточно строки `i[3456]86'. Для семейства m68k вам понадобится что-то вроде `m68*'. Конечно, если вам ненужно знать процессор, можно просто заменить соответствующее поле на `*' и указывать, например, `*-*-irix*'.


Назад Вперед
Сборочные файлы, Файлы поддержки Средства кросс-компиляции

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


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

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

Последнее редактирование: 2011-12-12 11:28:04

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

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

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

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


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