Когда дело доходит до разработки программного обеспечения, необходимо учитывать большое количество вопросов, включая архитектуру целевой системы, совместимость, графический интерфейс, библиотеки и многое другое. А если к этому добавить, что мы хотим, чтобы код нашего программного обеспечения мог работать не только в одной системе, но и чтобы он был кроссплатформенным, этот вопрос становится еще сложнее.
Причина разговоров об этом в том, что для разработчиков с открытым исходным кодом существуют различные инструменты, которые могут помочь в этой области и именно для этого конкретного случая. Давайте немного поговорим о GNU Autoconf.
О GNU Autoconf
GNU Автоконф. Это описано на сайте GNU, как:
Расширяемый пакет макросов M4, который создает сценарии оболочки для автоматической настройки пакетов исходного кода программного обеспечения. Эти сценарии могут адаптировать пакеты ко многим типам UNIX-подобных систем без ручного вмешательства пользователя. Autoconf создает сценарий конфигурации для пакета из файла шаблона, в котором перечислены функции операционной системы, которые может использовать пакет, в форме вызовов макросов M4.
Другими словами, GNU Autoconf — инструмент, который облегчает переносимость исходного кода между различными операционными системами. и среды компиляции при создании сценариев, которые независимы от него при выполнении в системе, в которой вы хотите его использовать.
Как уже упоминалось, GNU Autoconf Он «облегчает» задачу адаптации кода к различным системам типа UNIX, но не делает это автоматически. GNU Autoconf — это тот инструмент, который вам нужен, чтобы ваш код не содержал тонны блоков исходного кода, требующих условной компиляции.
Кроме того, GNU Autoconf не изобретать велосипед, то есть написание Makefile, который автоматически определяет настройки операционной системы и компилятора, а также установленные и расположенные библиотеки, а это требует много времени, потраченного на то, что уже делает это за вас.
Автоконф не решает всех сопутствующих проблем с созданием портативных пакетов программного обеспечения, поэтому его следует использовать в сочетании с другими инструментами сборки. такие как Automake и Libtool. Эти другие инструменты выполняют такие задачи, как создание переносимого рекурсивного make-файла со всеми стандартными целями, связывание общих библиотек и т. д.
в ключевые особенности Autoconf выделяется следующее:
- Автоматическая конфигурация: Autoconf используется для автоматического создания сценариев конфигурации из входного файла с именем configure.ac или configure.in. Эти сценарии конфигурации отвечают за определение характеристик и возможностей системы, в которой компилируется программное обеспечение.
- Переносимость: Одна из основных целей Autoconf — обеспечить легкость переноса программного обеспечения между операционными системами и архитектурами. Для этого сценарий конфигурации, созданный Autoconf, выполняет тесты системы для определения конкретных характеристик, таких как наличие определенных библиотек, команд или функций компилятора.
- M4:Autoconf написан поверх двух слоев: M4sugar, который предоставляет удобные макросы для чистого программирования M4, и M4sh, который предоставляет макросы, предназначенные для генерации сценариев оболочки, и использует язык макросов M4 в качестве основы для своей функциональности. M4 — это текстовый процессор, используемый для создания сценариев конфигурации на основе набора определенных макросов и правил.
- Скрипты конфигурации: Сценарии конфигурации, созданные Autoconf, обычно называемые .configure, выполняются до компиляции исходного кода. Эти сценарии выполняют тесты и настраивают среду сборки в соответствии с характеристиками системы, в которой она находится.
Стоит отметить, что GNU Autoconf в настоящее время находится на версии 2.72. и в нем подчеркивается поддержка будущего стандарта языка C, C23, поддержка была прекращена для компиляторов C, которые используют варианты языка до C89, которые поддерживают только старый синтаксис объявления функций в стиле K&R, который уже несовместим со следующим стандартом.
В дополнение к этому, M4 1.4.8, Perl 5.10 теперь требуются в качестве мини-версии для создания некоторых компонентов Autoconf, используемых для разработки Autoconf, и упоминается, что проверки осуществляются для позволяют разработчикам программного обеспечения гарантировать, что система поддерживать тип time_t, который не подвержен проблеме 2038 года.
Наконец, если вы интересно узнать об этом больше, вы можете проверить подробности в по следующей ссылке.