Autoconf
Autoconf | |
---|---|
| |
Тип | инструментальное программное обеспечение |
Разработчик | проект GNU |
Написана на | perl, m4 |
Операционная система | кроссплатформенное программное обеспечение |
Первый выпуск | 1991 |
Последняя версия |
|
Репозиторий | git.savannah.gnu.org/cgi… |
Лицензия | GPL |
Сайт | gnu.org/software/autocon… |
Медиафайлы на Викискладе |
Autoconf — утилита для создания конфигурационных скриптов (configure
), которые автоматически настраивают пакеты с исходным кодом для работы в Unix-подобных операционных системах.
Параметры
[править | править код]Скрипты конфигурации, созданные Autoconf, при работе не требуют вмешательства пользователя; обычно они даже не требуют, чтобы были заданы аргументы, указывающие тип системы. Вместо этого такие скрипты тестируют наличие каждого средства, которое может понадобиться данному пакету. В ходе выполнения каждой из проверок скрипты печатают отчёт о проводимых проверках. Таким образом эти скрипты хорошо справляются с системами, которые являются гибридами или специализированными вариантами большинства видов UNIX. Таким образом, пропадает необходимость в сопровождении файлов со списком всех возможностей всех версий каждого варианта UNIX.
Для каждого пакета программного обеспечения, который использует Autoconf, из шаблона создаётся скрипт настройки, который перечисляет системные возможности, в которых нуждается данный пакет или которые он может использовать. После того, как код на языке командного процессора, распознающий и обрабатывающий ту или иную возможность, написан, Autoconf позволяет использовать этот код во всех пакетах, которые могут использовать (или нуждаются) в соответствующей возможности. Если позже по каким-то причинам понадобится изменить код командного процессора, то изменения необходимо будет внести только в одно место; все скрипты настройки могут быть автоматически пересозданы, чтобы отразить изменения кода.
Существует несколько разных задач, относящихся к созданию переносимого программного обеспечения, которые в настоящее время нельзя решить средствами Autoconf. Среди них — автоматическое создание файлов Makefile со всеми необходимыми стандартными целями, а также предоставление замены стандартных библиотечных функций и заголовочных файлов в тех системах, в которых эти функции или файлы отсутствуют. Однако работа в этом направлении ведётся и эти возможности могут появиться в будущих версиях.
Autoconf навязывает некоторые ограничения на имена макросов, которые используются в директивах #ifdef
программ на языке C.
Для создания скриптов с помощью Autoconf требуется наличие программы GNU m4. Он пользуется возможностями, которых нет в некоторых UNIX-версиях программы m4. Он также превышает внутренние ограничения некоторых версий m4, включая GNU m4 версии 1.0. Вам необходимо использовать версию 1.1 (или более позднюю) программы GNU m4. Версии 1.3 и более поздние будут работать гораздо быстрее, чем версии 1.1 или 1.2.
CFLAGS
[править | править код]CFLAGS и CXXFLAGS являются или именами переменных среды, или переменными Makefile, которые устанавливаются для указания дополнительных параметров, передаваемых компилятору в процессе создания программного обеспечения.
Эти переменные обычно указываются внутри Makefile и затем выполняют вспомогательную роль по отношению к командной строке при вызове компилятора. Если они не указаны в Makefile, то они будут считаны из среды, если они там указаны. Инструменты наподобие конфигурационного скрипта ./configure утилиты autoconf обычно берут их из среды и записывают их в создаваемые Makefiles.
CFLAGS позволяет добавлять параметры для компилятора языка Си, а CXXFLAGS предполагается, что будет использоваться при вызове компилятора языка C++. Аналогично, переменная CPPFLAGS указывается для параметров, передаваемых препроцессору Си.
Эти переменные в основном используются для указания параметров компилятора при оптимизации или отладке, например: -g
, -O2
или (что специфично для GCC) -march=athlon
.
pkg-config
[править | править код]Утилита, предоставляющая интерфейс для получения информации об установленных программных библиотеках, включающую в себя параметры для C или C++ компилятора, параметры для компоновщика, а также версию пакета[2]. Информация берется из .pc-файла, создаваемого менеджером пакетов (к примеру RPM или deb). Изначально написана James Henstridge, затем переписана Хэвоком Пеннингтоном.
Примечания
[править | править код]- ↑ Weinberg Z. autoconf-2.72 released [stable] — 2023.
- ↑ John Calcote. Using pkg-config with Autotools // Autotools: A Practitioner's Guide to GNU Autoconf, Automake, and Libtool. — No Starch Press, 2010. — P. 299. — 332 p. — ISBN 9781593272067.
См. также
[править | править код]Литература
[править | править код]- Peter Smith. Software Build Systems: Principles and Experience. — USA: Addison-Wesley, 2011. — С. 624. — ISBN 978-0321717283.
- Michael W. Lucas. Absolute FreeBSD: The Complete Guide to FreeBSD. — USA: No Starch Press, 2007. — С. 744. — ISBN 978-1593271510.
- Babak Farrokhi. Network Administration with FreeBSD 7. — USA: Packt, 2008. — С. 280. — ISBN 978-1847192646.
- Mark G. Sobell. A Practical Guide to Red Hat Linux 8. — USA: Addison-Wesley, 2002. — С. 1616. — ISBN 978-0201703139.
Ссылки
[править | править код]- Перевод документации Autoconf для версии 2.13 . Дата обращения: 4 декабря 2013. Архивировано из оригинала 3 сентября 2014 года.
- Страница на веб-сайте GNU, посвящённая оптимизации Архивная копия от 5 февраля 2014 на Wayback Machine (англ.)
- Wiki-руководство по CFLAG в Gentoo Архивная копия от 1 февраля 2014 на Wayback Machine (англ.)
- Wiki-руководство по безопасному использованию CFLAGS в Gentoo Архивная копия от 1 февраля 2014 на Wayback Machine (англ.)
- Страница на веб-сайте Linux Review, посвящённая оптимизации компиляции при использовании gcc Архивная копия от 1 февраля 2014 на Wayback Machine (англ.)
- Программное обеспечение по алфавиту
- Программное обеспечение, разработанное в 1991 году
- Инструменты компиляции
- Автоматизация сборки
- Свободные системы автоматизации сборки
- Программное обеспечение проекта GNU
- Свободное кроссплатформенное программное обеспечение
- Свободное программное обеспечение, написанное на Perl