Autotools

Логотип проекту GNU

Autotools, або система збирання GNU, - це набір програмних засобів, призначених для підтримки переносимості вихідного коду програм між UNIX-подібними системами [1] .

Перенесення коду з однієї системи на іншу може виявитися непростим завданням. Різні реалізації компілятора мови Сі можуть істотно відрізнятися: деякі функції мови можуть бути відсутніми, мати інше ім'я або перебувати в різних бібліотеках. Програміст може вирішити цю задачу, використовуючи макроси і директиви препроцесора, наприклад #if, #ifdef та інші. Але в такому випадку користувач, компілює програму на своїй системі повинен буде визначити всі ці макроси, що не так просто, оскільки існує безліч різних дистрибутивів і варіацій систем. Autotools викликаються послідовністю команд ./configure && make && make install і вирішують ці проблеми автоматично.

Система збирання GNU Autotools є частиною GNU toolchain і широко використовується в багатьох проектах з відкритим вихідним кодом. Засоби зборки поширюються відповідно до GNU General Public License з можливістю використання їх в комерційних проектах [2] [3].


1. Компоненти GNU Autotools

Схема роботи autoconf і automake

В засобу збірки входять Autoconf, Automake, і Libtool [4]. Інші засоби, що використовуються з GNU Autotools: make, gettext, pkg-config, і, звичайно, GNU Compiler Collection, також званий GCC.


1.1. GNU Autoconf

Autoconf читає файли configure.in або, що те ж, configure.ac, (хоча configure.ac нову назву і воно більш переважно [5]) і генерує скрипт для налаштування під назвою configure. Для обробки файлів autoconf використовує GNU реалізацію мови макрокоманд m4.

Згенерований скрипт налаштування запускається користувачем. Він читає файли з розширенням " .in ", наприклад Makefile.in, обробляє їх (з'ясовуючи всі особливості системи) і отримує кінцевий результат - Makefile.

Autoconf використовує деякі допоміжні програми, написані для спрощення роботи. Наприклад, Autoheader працює з заголовними файлами, autoscan досліджує код на наявність типових проблем переносимості і створює початковий файл configure.in.


1.2. GNU Automake

Automake читає файли Makefile.am і створює переносимий Makefile, тобто Makefile.in, який потім після обробки скриптом конфігурації стає Makefile і використовується утилітою make.

1.3. GNU Libtool

Libtool управляє створенням статичних і динамічних бібліотек на різних UNIX-подібних операційних системах.

1.4. Gnulib

Gnulib спрощує процес створення переносних програм, що використовують Autoconf і Automake.

2. Обмеження засобів збирання GNU

Засоби збирання використовують bash -скрипти для настройки при збірці.

Засоби збірки можна використовувати як для створення програм для тієї ж архітектури, на якій здійснюється складання, так і для крос-компіляції для іншої архітектури. [1]. Також можливо налаштувати збірку для компіляції на Windows, використовуючи MinGW або встановивши Cygwin або MSYS поверх Windows щоб забезпечити необхідний рівень сумісності для виконання скрипта налаштування.

Засоби збирання і скрипт налаштування працюють, як правило, повільно, тому що викликають різні програми, такі як компілятор С багато разів для перевірки наявності різних бібліотек, заголовків файлів, і особливостей мови.


3. Виноски


4. Зовнішні посилання

Перегляд цього шаблону Проект GNU
Історія Heckert GNU white.svg
Ліцензії

GNU GPL GNU LGPL Affero GPL GNU FDL GPL linking exception

Програмне
забезпечення
Персоналії

Олександрі Олива Бенджамін Хілл Бредлі Кун Ебен могли Федеріко Хейнц Джордж Грів Георг Греве Джошуа Гей Лоїс Дечері Метт Лі Рікардо Галлі Річард Столлман Роберт Часселл Вільям Джон Салліван

Інші теми