Interested Article - Autotools


- 2021-08-26
- 1

Autotools ( МФА [ ˈ ɔ ː t ə ʊ t u ː l z ]; с англ. — «автоинструменты») — это система сборки проекта GNU , набор программных средств , предназначенных для поддержки переносимости исходного кода программ между UNIX-подобными системами .
Перенос кода с одной системы на другую может оказаться непростой задачей. Различные реализации компилятора языка Си могут существенно различаться: некоторые функции языка могут отсутствовать, иметь другое имя или находиться в разных библиотеках. Программист может решить эту задачу, используя макросы и директивы препроцессора, например
#if
,
#ifdef
и прочие. Но в таком случае пользователь, компилирующий программу на своей системе, должен будет определить все эти макросы, что не так просто, поскольку существует множество разных дистрибутивов и вариаций систем. Autotools вызываются последовательностью команд
./configure && make && make install
и решают эти проблемы автоматически.
Система сборки GNU Autotools является частью GNU toolchain и широко используется во многих проектах с открытым исходным кодом . Средства сборки распространяются в соответствии с GNU General Public License с возможностью использования их в коммерческих проектах .
Компоненты GNU Autotools

В средства сборки входят Autoconf , Automake , и . Другие средства, используемые с GNU Autotools: make , gettext , pkg-config , и, конечно, GCC и binutils .
GNU Autoconf
Autoconf
читает файл
configure.ac
(или устаревший
configure.in
) и генерирует скрипт для настройки под названием
configure
. Для обработки файлов autoconf использует GNU-реализацию языка макрокоманд
m4
.
Сгенерированный скрипт настройки запускается пользователем. Скрипт читает файлы с расширением "
.in
", например
Makefile.in
, обрабатывает их (выясняя все особенности системы) и получает конечный результат —
Makefile
.
Autoconf использует некоторые вспомогательные программы, написанные для упрощения работы. Например, Autoheader работает с
заголовочными файлами
,
исследует код на наличие типичных проблем переносимости и создаёт изначальный файл
configure.ac
.
GNU Automake
Automake
читает файлы
Makefile.am
и создаёт переносимый
Makefile
, то есть
Makefile.in
, который затем после обработки скриптом конфигурации становится
Makefile
и используется утилитой
make
.
GNU Libtool
управляет созданием статических и динамических библиотек на разных UNIX-подобных операционных системах.
Gnulib
упрощает процесс создания переносимых программ, использующих Autoconf и Automake.
Ограничения средств сборки GNU
Средства сборки используют sh -скрипты для настройки при сборке.
Средства сборки можно использовать как для создания программ для той же архитектуры, на которой производится сборка, так и для кросс-компиляции для иной архитектуры. . Также возможно настроить сборку для компиляции на Windows, используя MinGW или установив Cygwin или MSYS поверх Windows, чтобы обеспечить необходимый для выполнения скрипта настройки.
Средства сборки и скрипт настройки работают, как правило, медленно, потому что вызывают различные программы, например, компилятор С, много раз для проверки наличия различных библиотек, заголовочных файлов, и особенностей языка.
См. также
Сноски
- . Дата обращения: 9 января 2011. 23 декабря 2010 года.
- . Дата обращения: 6 ноября 2010. 21 июля 2011 года.
- от 21 июля 2011 на Wayback Machine including all pertinent license exceptions
- . Дата обращения: 6 ноября 2010. 1 декабря 2010 года.
- . Дата обращения: 6 ноября 2010. 25 декабря 2010 года.
Внешние ссылки
- от 28 августа 2007 на Wayback Machine (англ.)
- The от 21 августа 2008 на Wayback Machine package (англ.)
- (англ.)
- от 3 декабря 2010 на Wayback Machine (англ.)
- (рус.)
- от 27 декабря 2010 на Wayback Machine (англ.)
- от 20 декабря 2010 на Wayback Machine (англ.)
- (англ.)
- (рус.)
- от 22 марта 2018 на Wayback Machine (рус.)
- от 15 апреля 2017 на Wayback Machine
- от 11 июня 2017 на Wayback Machine

- 2021-08-26
- 1