Как создать программный пакет в Unix / Linux - PullRequest
6 голосов
/ 21 февраля 2009

Как мы можем создать программный пакет. Чтобы после извлечения нашего программного обеспечения tar ball пользователь может сделать Типичные шаги:

$ gunzip < mycode.tar.gz | tar xvf -
$ ./configure
$ make
$ make install

Ответы [ 6 ]

7 голосов
/ 21 февраля 2009

Альтернативой сложному для понимания GNU / Autools является CMake.

http://www.cmake.org/cmake/help/examples.html

например. KDE использует это.

6 голосов
/ 21 февраля 2009

Посмотрите на цепочку инструментов GNU autoconf / automake. Вот бесплатный учебник / книга.

3 голосов
/ 21 февраля 2009

В старые времена этот процесс делался вручную. Каждый Makefile был написан от руки (файл make используется как сценарий). Это стало проблематичным, когда дело дошло до переносимости, поэтому был создан скрипт configure. Скрипт ./configure был написан от руки и для каждого проекта. В конечном итоге это было автоматизировано GNU с их пакетом autotools. Он состоит из autoconf, automake и нескольких других. Хотя существуют альтернативы, особенно для make, наиболее широко используется autotools. ... По крайней мере, в системах GNU / Linux. Альтернативы включают в себя уже упомянутые CMake , Boost.Build , Boost.Jam , SCons и другие.

1 голос
/ 04 июля 2016

Autotools.

Вам нужно написать сценарии configure.ac и Makefile.am.

Configure.ac довольно прост и может быть автоматически сгенерирован из запуска autoscan в вашем исходном коде. Это сгенерирует файл 'configure.scan', который вам нужно настроить для создания окончательного файла configure.ac.

Файл Automake.am основан на соглашениях. Вам, вероятно, понадобится что-то вроде:

AUTOMAKE_OPTIONS = foreign subdir-objects
AM_CXXFLAGS = -std=c++11 -static-libstdc++ -Wall -Werror \
    -Wfatal-errors -I blah
AM_LDFLAGS = blah

bin_PROGRAMS = mybinary
mybinary_SOURCES = \
    blah.h blah.cc

все основано на схеме именования:

  • dist vs nodist = должен ли он быть построен
  • inst vs noinst = должен ли он быть установлен
  • ДАННЫЕ = файлы данных
  • MANS = man-страницы
  • SOURCES = исходный код

поэтому dist_noinst_DATA предназначен для файлов данных, необходимых для построения, но не установленных.

Когда у вас есть оба этих файла, вам обычно нужно запустить что-то вроде:

aclocal && autoheader && automake --add-missing && autoconf

для установки файлов автоинструментов, необходимых для сборки. Это можно поместить в сценарий оболочки и запустить до запуска ./configure.

1 голос
/ 21 февраля 2009

rpmbuild - это команда для сборки пакетов rpm

справочная страница

учебник

1 голос
/ 21 февраля 2009

Используйте autotools для создания скрипта configure (который сгенерирует Makefile, необходимый для двух последних шагов), затем создайте tarball со всем вашим кодом и всем, что в нем есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...