LINUX.ORG.RU

Работа с оптимизированными исходниками


0

1

Исходники любой свободной пробраммы или библиотеки можно найти на сайте разработчика (чаще всего на sourceforge.net). Вот во многих дистрибутивах возможно получить исходники прямо с репозитория дистрибутива. У меня, например, Debian, и для получения исходников я могу воспользоваться средством apt-src. Вот набираю «apt-src install libtorrent» и текущем каталоге у меня появляются:

drwxr-xr-x  7 sunny sunny    808 Сен 24 23:22 libtorrent-0.11.9
-rw-r--r--  1 sunny src     9369 Апр 16  2008 libtorrent_0.11.9-1.1.diff.gz
-rw-r--r--  1 sunny src     1208 Апр 16  2008 libtorrent_0.11.9-1.1.dsc
-rw-r--r--  1 sunny src   545210 Дек 19  2007 libtorrent_0.11.9.orig.tar.gz
Я так понимаю это исходники, оптимизированные специально для моего дистрибутива. С каталогом libtorrent-0.11.9 вроде всё понятно, но зачем нужно всё остальное? Если получить исходники с опцией --location, то удалить их потом через apt-src remove не удастся. На unixforum.org мне сказали что возможно это баг. Возможно ли удалять исходники с помощью rm или это будет некорректно?

Дальше, на unixforum.org мне сказали, что для компиляции программы из оптимизированных исходников не нужно ни "./configure", ни «make», нужно лишь dpkg-buildpackade, которая сама всё сделает и на выходе даст готовый deb-пакет. Но вот не пойму никак, как в этом случае поступать если программу или библиотеку что нужно переконфигурировать. А почему я этим заморочился? А вот подсказали тут в одной из моих предыдущих тем что rtorrent похоже собран неправильно. Вот и хочу пересобрать и переконфигурировать самостоятельно. Заодно и научиться собирать программы из оптимизированных исходников. Жду советов уважаемых спецыалистов по всему, а также ссылок на вменяемые русскоязычные руководства.

★★★★★

по-моему *diff* это как раз патч, который будет накладываться на *orig*
по-поводу «не нужно» - они сами не нужны - так и передай :)

megabaks ★★★★ ()

Возможно ли удалять исходники с помощью rm или это будет некорректно?

Почему же, корректно. AFAIK, исходники нигде не регистрируются.

post-factum ★★★★★ ()

>libtorrent_0.11.9.orig.tar.gz
Это файл с ванильными исходниками

libtorrent_0.11.9-1.1.diff.gz

Файл с патчем от мейнтейнера пакета в дебиане. Этим патчем создаётся каталог debian в дереве исходников, который нужен dpkg-buildpackage для сборки пакета.

libtorrent_0.11.9-1.1.dsc

Так называемый контрол-файл с описанием пакета и подписью.

Для того, чтобы изменить опции сборки пакета, нужно залезть в файл debian/rules в пропатченных исходниках, это мейкфайл, который вызывается при сборке. Оттуда накладываются различные патчи, вызывается конфигур, мейк, файлы пакета раскладываются по правильным местам итд. Там, соответственно, и можно поправить опции сборки. После всех правок нужно выполнить команду dpkg-buildpackage (или apt-src build ...) и установить пакет.

Laz ★★★★★ ()

megabaks писал

по-поводу «не нужно» - они сами не нужны - так и передай :)

В статье, ссылку на которую ниже дал satrap тоже описан процесс сборки без "./configure" и «make».

post-factum писал

Почему же, корректно. AFAIK, исходники нигде не регистрируются.

Если не регистрируются, то как же тогда потом обновлять?

Laz писал

нужно залезть в файл debian/rules

Выкладываю содержимое debian/rules для полученных исходников libtorrent:

#!/usr/bin/make -f

include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/autotools.mk
include /usr/share/cdbs/1/rules/simple-patchsys.mk

DEB_OPT_FLAG = -fno-strict-aliasing
DEB_CONFIGURE_EXTRA_FLAGS = --enable-aligned
DEB_DH_INSTALL_SOURCEDIR = debian/tmp
DEB_INSTALL_DOCS_ALL := --exclude=NEWS
Что тут нужно изменять? Куда прописывать опции, передаваемые скрипту configure, такие как --prefix=/usr

sunny1983 ★★★★★ ()
Ответ на: комментарий от sunny1983

>тоже описан процесс сборки без "./configure" и «make».

Они таки вызываются, просто неявно.

anon_666 ()
Ответ на: комментарий от sunny1983

Куда прописывать опции, передаваемые скрипту configure

как бы напрашивается DEB_CONFIGURE_EXTRA_FLAGS из debian/rules

satrap ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.