MyTetra Share
Делитесь знаниями!
Типовая сборка программ под Linux. Что делать, если нет файла configure, какие системы сборки бывают
Время создания: 10.01.2020 16:11
Раздел: Компьютер - Linux - Инсталляция программ
Запись: xintrea/mytetra_syncro/master/base/1578661862sk81scefcd/text.html на raw.github.com

В ОС Linux авторы программ традиционно наплевательски относятся к пользователям. Зачастую файлы README и INSTALL содержат недостоверную информацию о том, как собирать загадочные проекты этих сумрачных гениев. Поэтому, опытный Linux-пользователь должен уметь "на глаз" определять, какая система сборки используется в том или ином программном пакете. Определяется это, обычно, по составу файлов, которые находятся в корне проекта.


Для сборки программ в GNU/Linux используется (в основном) программа make, которая запускает инструкции из файла Makefile. Но поскольку дистрибутивов GNU/Linux много, и они все разные, то для того чтобы собрать программу, пришлось бы для каждого дистрибутива отдельно прописывать пути, где какие лежат библиотеки и заголовочные файлы. Программисты не могут изучать каждый дистрибутив и для каждого отдельно создавать Makefile. Поэтому придумали конфигураторы, которые «изучают» систему, и в соответствии с полученными знаниями создают Makefile. Но на конфигураторе они не остановились и придумали конфигураторы конфигураторов… Хорошая новость в том, что на этом они остановились.

Для сборки нам нужны компиляторы: они прописаны в зависимостях пакета build-essential, так что достаточно установить его со всеми зависимостями. Ещё нужны autoconf и automake.

Итак, чтобы собрать что-то из исходников, нужно сначала собрать конфигуратор configure. Если файл с таким именем уже есть в исходниках, то можно сразу запускать его. Но бывает так, что этого файла нет. Тогда, если это проект на c/c++, а не какой-нибудь Ruby или Go, то правила сборки конфигуратора описаны в файле configure.in. Для сборки конфигуратора необходимо выполнить


./bootstrap


или


./autogen.sh


Если таких скриптов в архиве не оказалось, то можно выполнить последовательно следующие команды:


aclocal

autoheader

automake --gnu --add-missing --copy --foreign

autoconf -f -Wall


Все эти команды используют файл configure.in. После выполнения этих команд создастся файл configure. После этого необходимо запустить конфигуратор для проверки наличия всех зависимостей, а также установки дополнительных опций сборки (если возможно) и просмотра результата установки (опционально - может не быть):


./configure


Внимание!

Иногда разработчики поставляют исходники, в которых одновременно присутствуют и файл autogen.sh и файл configure. Чаще всего это означает, что разработчики забыли исключить файл configure из комплекта поставки. По-хорошему, они должны были поставить только autogen.sh, чтобы он сгенерировал configure с учетом системы пользователя. Поэтому не стоит торопиться и сразу запускать configure. Возможно, стоит переименовать этот файл, запустить autogen.sh, и запустить новый configure. Если он не стработает, попробовать запустить старый.

Попадаются и такие проекты, в которых переход на autogen.sh либо заброшен, либо находится в начальной стадии. И центральным, генерирующим Makefile скриптом, является configure. Конечно, разработчики нигде об этом писать не будут, исходя из принципа что кому нужно - тот сам разберется. В этом случае нет смысла запускать autogen.sh, нужно расчитывать именно на configure.

Как было сказано выше, сборка программ под Linux - это особая магия, иногда требующая умения читать мысли незнакомых людей.


Конфигуратор configure построит Makefile основываясь на полученных знаниях и файле makefile.am. Можно передать конфигуратору опции, предусмотренные в исходниках программы, которые позволяют включать/отключать те или иные возможности программы, обычно узнать о них можно командой


./configure --help


Также есть набор стандартных опций, вроде


--prefix=


которая указывает, какой каталог использовать для установки. Для Ubuntu обычно


--prefix=/usr


или


--prefix=/usr/local


БЕЗ слеша в конце! Теперь можно запустить процесс сборки самой программы командой


make


Для сборки достаточно привелегий обычного пользователя. Окончанием сборки можно считать момент, когда команды в консоли перестанут «беспорядочно» выполняться и не будет слова error. Теперь всё скомпилировано и готово для установки.

Сама установка происходит под пользователем root с помощью команды:


make install


Либо, если необходимо установить программу через пакетный менеджер, создается пакет через программу checkinstall с соответсвующими для текущего дистрибутива опциями.


Так же в этом разделе:
 
MyTetra Share v.0.58
Яндекс индекс цитирования