Autotools

Autotools (МФА [ˈɔːtəʊtuːlz]; с англ. — «автоинструменты») — это система сборки проекта 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, и, конечно, GCC и binutils.
GNU Autoconf
Autoconf читает файл configure.ac (или устаревший configure.in[5]) и генерирует скрипт для настройки под названием configure. Для обработки файлов autoconf использует GNU-реализацию языка макрокоманд m4.
Сгенерированный скрипт настройки запускается пользователем. Скрипт читает файлы с расширением ".in", например Makefile.in, обрабатывает их (выясняя все особенности системы) и получает конечный результат — Makefile.
Autoconf использует некоторые вспомогательные программы, написанные для упрощения работы. Например, Autoheader работает с заголовочными файлами, autoscan исследует код на наличие типичных проблем переносимости и создаёт изначальный файл configure.ac.
GNU Automake
Automake читает файлы Makefile.am и создаёт переносимый Makefile, то есть Makefile.in, который затем после обработки скриптом конфигурации становится Makefile и используется утилитой make.
GNU Libtool
Libtool управляет созданием статических и динамических библиотек на разных UNIX-подобных операционных системах.
Gnulib
Gnulib упрощает процесс создания переносимых программ, использующих Autoconf и Automake.
Ограничения средств сборки GNU
Средства сборки используют sh-скрипты для настройки при сборке.
Средства сборки можно использовать как для создания программ для той же архитектуры, на которой производится сборка, так и для кросс-компиляции для иной архитектуры. [1]. Также возможно настроить сборку для компиляции на Windows, используя MinGW или установив Cygwin или MSYS поверх Windows, чтобы обеспечить необходимый уровень совместимости для выполнения скрипта настройки.
Средства сборки и скрипт настройки работают, как правило, медленно, потому что вызывают различные программы, например, компилятор С, много раз для проверки наличия различных библиотек, заголовочных файлов, и особенностей языка.
См. также
Сноски
- ↑ Документация по GNU Build System. Дата обращения: 9 января 2011. Архивировано 23 декабря 2010 года.
- ↑ Autoconf license exception. Дата обращения: 6 ноября 2010. Архивировано 21 июля 2011 года.
- ↑ libtool HACKING Архивная копия от 21 июля 2011 на Wayback Machine including all pertinent license exceptions
- ↑ Learning the GNU development tools: Preface. Дата обращения: 6 ноября 2010. Архивировано 1 декабря 2010 года.
- ↑ «Writing configure.ac». Дата обращения: 6 ноября 2010. Архивировано 25 декабря 2010 года.
Внешние ссылки
- The GNU configure and build system Архивная копия от 28 августа 2007 на Wayback Machine (англ.)
- The pkg-config Архивная копия от 21 августа 2008 на Wayback Machine package (англ.)
- automake manual (англ.)
- GNU automake documentation Архивная копия от 3 декабря 2010 на Wayback Machine (англ.)
- Документация GNU autoconf (рус.)
- Autotools Tutorial Архивная копия от 27 декабря 2010 на Wayback Machine (англ.)
- GNU Autoconf, Automake, and Libtool Архивная копия от 20 декабря 2010 на Wayback Machine (англ.)
- Autotools: a practitioner's guide to Autoconf, Automake and Libtool (англ.)
- Цикл статей о GNU Autotools (рус.)
- Использование GNU Autotools. Создание своего скрипта configure и файла Makefile Архивная копия от 22 марта 2018 на Wayback Machine (рус.)
- Goat Book Архивная копия от 15 апреля 2017 на Wayback Machine
- Autotools Mythbuster (CreativeCommons license Attribution-NonCommercial-ShareAlike 3.0 Unported) Архивная копия от 11 июня 2017 на Wayback Machine
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.