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

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

Copyright (C) 1998 Cygnus Solutions

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Free Software Foundation.

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

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

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

Введение

Этот документ описывает систему конфигурирования и сборки GNU. Он описывает, как объединяются autoconf, automake, libtool и make. Кроме того, он включает в себя обсуждение старой системы конфигурирования Cygnus.

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

Этот документ написан на основании нескольких источников, включающих мануал по autoconf Дэвида Маккензи, мануал по automake Дэвида Маккензи и Тома Тромей, мануал по libtool Гордона Матзигкейта и мануал по конфигурированию Cygnus К. Ричарда Пикслея.

Задачи

Система конфигурирования и сборки GNU используется для решения следующих двух задач:

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

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

Инструменты

Система конфигурирования и сборки GNU состоит из нескольких различных утилит. Разработчики программ должны собрать и инсталлировать все эти утилиты:

autoconf
предоставляет общий портативный фреймворк, тестированием выявляющий особенности хозяйской системы в момент сборки.
automake
система для описания того, как собирать программу, позволяющая разработчику написать упрощённый `Makefile'.
libtool
стандартизованный метод для сборки совместно используемых библиотек.
gettext
предоставляет фреймворк для перевода текстовых сообщений на другие языки; практически не обсуждается в данном документе.
m4
autoconf включает в себя GNU-версию m4; стандартной юниксовой m4 недостаточно.
perl
automake нуждается в perl.

Люди, которым нужно всего-лишь собирать программы из распространяемых пакетов исходников, не нуждаются в каких-то специальных утилитах помимо юниксового shell, программы make и компилятора C.

История

Здесь излагается очень краткая и, возможно, неточная история.

В 1980-х стало быстро увеличиваться число вариантов Unix и встала проблема того, что жестко написанные программы не работали на всех вариантах. Эта проблема часто решалась использованием #ifdef для идентификации специфических систем, однако многие разработчики не имели доступа к каждой системе, тем более, что характеристики некоторых систем изменялись от версии к версии.

Разработки на пути решения проблемы велись, к 1992 году, как минимум в трех различных направлениях:

  • Программа Metaconfig разрабатывалась Ларри Уолом (Larry Wall), Харланом Стеном (Harlan Stenn) и Рафаэлем Манфреди (Raphael Manfredi).
  • Скрипт конфигурирования Cygnus, разрабатывавшийся К. Ричардом Пикслеем (K. Richard Pixley), и скрипт конфигурирования gcc, разрабатывавшийся Ричардом Столлманом (Richard Stallman). В них использовались по сути одинаковые идеи, и разработчики регулярно общались.
  • Программа autoconf разрабатывалась Дэвидом Маккензи (David MacKenzie).

Программа Metaconfig использовалась для Perl и нескольких других программ. Она была частью пакета Dist. Я не знаю, когда она начала разрабатываться.

В 1994 Дэвид Маккензи с помощниками модифицировал autoconf, включив в него все возможности конфигуратора Cygnus. С тех пор начался медленный но неуклонный процесс переноса программ GNU с конфигуратора Cygnus на autoconf. Соответственно был изменён gcc, из которого был исключён скрипт конфигурирования gcc.

GNU autoconf регулярно поддерживался до конца 1996 года. На момент написания этого документа в июне 1998, он не имеет публичного майнтейнера.

Большинство программ собираются с помощью программы make, которая требует от разработчика написания Makefile-ов, описывающих как собирать программы. С тех пор как программы стали стали собираться почти одинаковым способом, Makefile-ы стали часто дублироваться.

Система X Window собирается с помощью утилиты imake, которая использует базу данных правил для исключения дублирования. Однако, сборка утилит, которые разрабатывались с помощью imake, требует чтобы сборщику была доступна инсталлированная imake, что противоречит одной из целей системы GNU.

Новый BSD make содержит стандартную библиотеку фрагментов Makefile, которая позволяет разработчикам писать очень простые Makefile-ы. Однако, это требует, чтобы сборщик инсталлировал новую программу BSD make.

В 1994 Дэвид Маккензи написал первую версию automake, которая позволяла написание простых сборочных описаний, которые затем могли конвертироваться в Makefile, пригодный для использования со стандартной программой make. В 1995 Том Тромей завершил переписывание automake на Perl и продолжил его улучшение.

Около 1995 года некоторые различные пакеты свободных сборочных библиотек поддерживали сборку разделяемых библиотек для различных платформ. Однако единого подхода к этому несуществовало. В начале 1996 года Гордон Матзигкейт начал работать над libtool, которая предоставляла стандартизованный подход к сборке разделяемых библиотек. С самого начала этот инструмент был интегрирован в automake.

Разработка automake и libtool координируется проектом GNITS, — группой майнтейнеров GNU, которые проектируют стандартизованные утилиты для поддержки стандартов кодирования GNU.

Сборка

Большинство читателей этого документа уже, наверное, знают как собирать утилиты посредством запуска `configure' и `make'. Этот раздел может рассматриваться как быстрое введение или как напоминание.

Обычно, сборка нужной утилиты проста и заключается в запуске `configure' с последующим запуском `make'. Вы можете запустить `configure' из пустой директории указав путь к скрипту `configure' в директории с исходниками. Директория, в которой вы запускаете `configure' называется объектной директорией.

Для того, чтобы использовать объектную директорию, отличную от директории с исходниками, вы должны использовать GNU-версию `make', которая требует поддержки `VPATH'. Несмотря на это ограничение, использование отдельной объектной директории строго рекомендуется по следующим причинам:

  • Это предохранит сгенерированные в ходе сборки файлы от беспорядка в ваших исходниках.
  • Это позволит вам удалять собранные файлы путём простого удаления всей сборочной директории.
  • Это позволит вам осуществлять сборку из одних и тех же исходников с несколькими наборами опций конфигурации одновременно.

Если у вас нет GNU `make', вы должны запускать `configure' в дереве исходников. Все пакеты GNU должны это поддерживать. Более того, пакеты GNU не должны предполагать наличия GNU `make'.

После запуска `configure' вы можете собрать утилиту запустив `make'.

Для инсталляции этой утилиты запустите `make install'. Инсталляция утилит заключается в копировании программ и всех необходимых файлов их поддержки в инсталляционную директорию. Местоположение инсталляционной директории определяется опциями `configure', как описано ниже.

В настоящее время info-файлы собираются и устанавливаются в дереве Cygnus двумя различными шагами. Чтобы собрать их запустите `make info'. Для их инсталляции запустите `make install-info'.

Все скрипты `configure' поддерживают широкий набор опций. Наиболее интересными из них являются опции `--with' и `--enable', которые широко используются для учета специфики нестандартных утилит. Как правило, вы можете использовать опцию `--help' для получения списка интересующих опций для данного скрипта configure.

Единственные типовые опции, которые вам, возможно, понадобятся, — это опции `--prefix' и `--exec-prefix'. Они используются для указания инсталляционной директории.

Директория, названная посредством опции `--prefix', будет хранить машино-независимые файлы, такие как info-файлы.

Директория, которая названа в качестве `--exec-prefix', обычно является поддиректорией директории `--prefix' и содержит машинно-зависимые файлы, как, например, исполняемые.

По умолчанию значением `--prefix' является `/usr/local'. Умолчальным значением для `--exec-prefix' является значение, используемое для `--prefix'.

Для релизов Cygnus используется соглашение о том, что в качестве опции `--prefix' следует указывать `/usr/cygnus/release' (где release — это имя релиза), а в качестве опции `--exec-prefix'`/usr/cygnus/release/H-host' (где host — это имя конфигурации хозяйской системы, смотрите главу Имена конфигурации).

Не используйте какие-либо другие исходники или другую директорию в качестве инсталляционной. Это обязательно приведет к путанице.


Вперед
Начало работы

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


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

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

Последнее редактирование: 2011-11-23 06:54:48

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

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

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

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


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