- Autotools
-
Autotools, или система сборки GNU,— это набор программных средств, предназначенных для поддержки переносимости исходного кода программ между UNIX-подобными системами[1].
Перенос кода с одной системы на другую может оказаться непростой задачей. Различные реализации компилятора языка Си могут существенно отличаться: некоторые функции языка могут отсутствовать, иметь другое имя или находиться в разных библиотеках. Программист может решить эту задачу, используя макросы и директивы препроцессора, например
#if
,#ifdef
и прочие. Но в таком случае пользователь, компилирующий программу на своей системе должен будет определить все эти макросы, что не так просто, поскольку существует множество разных дистрибутивов и вариаций систем. Autotools вызываются последовательностью команд./configure && make && make install
и решают эти проблемы автоматически.Система сборки GNU Autotools является частью GNU toolchain и широко используется во многих проектах с открытым исходным кодом. Средства сборки распространяются в соответствии с GNU General Public License с возможностью использования их в коммерческих проектах[2][3].
Содержание
Компоненты GNU Autotools
В средства сборки входят Autoconf, Automake, и Libtool [4]. Другие средства, используемые с GNU Autotools: make, gettext, pkg-config, и, конечно, GNU Compiler Collection, также называемый GCC.
GNU Autoconf
Autoconf читает файлы
configure.in
или, что то же,configure.ac
, (хотяconfigure.ac
новое название и оно более предпочтительно[5]) и генерирует скрипт для настройки под названиемconfigure
. Для обработки файлов autoconf использует GNU реализацию языка макрокоманд m4.Сгенерированный скрипт настройки запускается пользователем. Он читает файлы с расширением "
.in
", напримерMakefile.in
, обрабатывает их (выясняя все особенности системы) и получает конечный результат —Makefile
.Autoconf использует некоторые вспомогательные программы, написанные для упрощения работы. Например, Autoheader работает с заголовочными файлами, autoscan исследует код на наличие типичных проблем переносимости и создаёт изначальный файл
configure.in
.GNU Automake
Automake читает файлы
Makefile.am
и создаёт переносимыйMakefile
, то естьMakefile.in
, который затем после обработки скриптом конфигурации становитсяMakefile
и используется утилитой make.GNU Libtool
Libtool управляет созданием статических и динамических библиотек на разных UNIX-подобных операционных системах.
Gnulib
Gnulib упрощает процесс создания переносимых программ, использующих Autoconf и Automake.
Ограничения средств сборки GNU
Средства сборки используют bash-скрипты для настройки при сборке.
Средства сборки можно использовать как для создания программ для той же архитектуры, на которой производится сборка, так и для кросс-компиляции для иной архитектуры. [1]. Также возможно настроить сборку для компиляции на Windows, используя MinGW или установив Cygwin или MSYS поверх Windows чтобы обеспечить необходимый уровень совместимости для выполнения скрипта настройки.
Средства сборки и скрипт настройки работают, как правило, медленно, потому что вызывают различные программы, такие как компилятор С много раз для проверки наличия различных библиотек, заголовочных файлов, и особенностей языка.
См. также
Сноски
- ↑ Документация по GNU Build System
- ↑ Autoconf license exception
- ↑ libtool HACKING including all pertinent license exceptions
- ↑ Learning the GNU development tools: Preface
- ↑ Autoconf, “Writing configure.ac”
Внешние ссылки
- The GNU configure and build system(англ.)
- The pkg-config package(англ.)
- automake manual(англ.)
- GNU automake documentation(англ.)
- Документация GNU autoconf(рус.)
- Autotools Tutorial(англ.)
- GNU Autoconf, Automake, and Libtool(англ.)
- Autotools: a practitioner's guide to Autoconf, Automake and Libtool(англ.)
Проект GNU История Лицензии GNU GPL • GNU LGPL • Affero GPL • GNU FDL • GPL linking exception
Программное
обеспечениеПерсоналии Александре Олива • Бенджамин Хилл • Брэдли Кун • Эбен Моглен • Федерико Хейнц • Джордж Грив • Георг Греве • Джошуа Гэй • Лоис Дечэри • Мэтт Ли • Рикардо Галли • Ричард Столлман • Роберт Часселл • Вильям Джон Салливан
Другие темы Категория:- GNU
Wikimedia Foundation. 2010.