Правила Форума редакция от 22.06.2020 |
|
|
|
|
|
Опции темы | Опции просмотра | Language |
07.11.2008, 13:48 | #1 |
Banned
Регистрация: 21.08.2007
Сообщений: 23
Репутация: 53
|
FAQ: Как компилить програмы из исходников!
вступление:
программы обычно распространяются в упакованных архивах, это файлы с расширениями Код: <some_app_name>.tar.gz (иногда .tgz) <some_app_name>.tar.bz2 нужно понимать отличие между архивом и упаковщиком. Для архивирования диркторий и файлов используется программа tar результатом её работы получается файл с расширением .tar Грубо говоря это копия файловой системы(директорий и файлов с их атрибутами и правами доступа) но помещённые в один файл. Данный файл по размеру будет чуть больше чем суммарный размер файлов которые были заархивированы. поэтому (а может и просто так) используют упаковщики, программы которые позволяют уменьшить размер файла без потери данных. Так вот не многие упаковщики умеют работать с несколькими файлами, но зато с одним справляются на ура. результатом работы упаковщика gzip будет файл с расширением .gz Таким образом файл заканчивающийся на .tar.gz это результат работы двух программ! tar.gz аналогичен файлу с расширением zip только zip не позволяет сохранить все атрибуты и права доступа. Таким образом чтобы распаковать файл tar.gz нужно воспользоваться двумя программами. gunzip распакует файл например результатом команды Код: gunzip -d <some_app_name>.tar.gz будет файл <some_app_name>.tar а команда tar -x <some_app_name>.tar разархивирует его. К счастью для нас GNU версия программы tar умеет распаковывать, поэтому на не нужно вызывать gunzip а можно просто указать программе tar что файл нужно cначала распаковать. например команда Код: tar -z -x <some_app_name>.tar.gz сразу распакует и разархивирует. Отличие файлов с расширениями <some_app_name>.tar.gz и <some_app_name>.tar.bz2 лишь в том что использовались разные упаковщики, для второго файла использовалась команда bzip2 для распаковки <some_app_name>.tar.bz2 можно выполнить команду Код: tar -j -x <some_app_name>.tar.bz2 немного теории: Для сборки программ в линуксе используется (в основном) программа make Которая запускает инструкции из Makefile но поскольку дистрибутивов линукса много и они все разные то для того чтобы собрать программу нужно для каждого дистрибутива отдельно прописывать пути где какие библиотеки, заголовочные файлы лежат. Программисты рехнулись бы изучать каждый дистрибутив и для каждого отдельно создавать Makefile Поэтому придумали конфигураторы Которые "изучают" систему и в соответствии с полученными знаниями создают Makefile но на конфигураторе они не остановились и придумали конфигураторы конфигураторов =) на стом они остановились Для сборки нам нужны компиляторы они прописаны в зависимостях пакета build-essential так что достаточно установить его со всеми зависимостями. Ещё нужны autoconf и все automake которые найдёте . Итак чтобы собрать что то из исходниктов нужно сначала "собрать" конфигуратор как собрать конфигуратор описано в файле configure.in а собирается конфигуратор следующими командами Код: bootstrap или autogen.sh т.е. достаточно запустить этот скрипт. с если нет скриптов bootstrap или autogen.sh то можно выполнить последовательно следующие команды Код: aclocal autoheader automake --gnu --add-missing --copy --foreign autoconf -f -Wall Отмечу что все эти команды используют файл configure.in После выполнения этих команд создастся файл Код: configure Вот теперь если вы запустите конфигуратор командой Код: ./configure он проанализирует вашу систему скажет чего хватает/не хватает возможно покажет какие опции будующей программы будут доступны и/или пути куда будет установлена скомпилированная программа (после выполнения make install) Конфигуратор построит Makefile основывассь на полученных знаниях и файле Код: makefile.am Отмечу что можно передать конфигуратору опции предусмотренные в исходниках программы которые позволяют включать отключать те или иные возможности программы, обычно узнать о них можно командой Код: ./configure --help с так же есть набор стандартных опций вроде --prefix= которая указывает какой каталог использовать для установки. Для Ubuntu обычно Код: --prefix=/usr или --prefix=/usr/local БЕЗ слеша в конце! Теперь можно запустить процесс сборки самой программы команда Код: make для сборки достаточно привелегий обычного пользователя. Окончанием сборки можно считать момент когда команды в консоле перестанут "беспорядочно" выполнстся и не будет слова error теперь всё скомпилированно и готово для установки. на данном этапе можно запустить Код: make install но уже с привилегиями root например командой Код: sudo make install Или checkinstall для того чтобы сгенерировать deb пакет. со хочу предупредить checkinstall не все исходники понимает. Поскольку автор программы может написать особые скрипты по установке и checkinstall их не поймёт. ничего страшного в том что вы установите программу не пакетом а командой make install нет, программу всегда можно удалить командой make uninstall выполнив её в корневой директории исходников программы (там где вы запускали make install) Ещё есть возможность установить пакет не в корень а в другую директорию из которой потом можно самому вручную собрать пакет, используя команду Код: fakeroot P.S. Часто на этапе конфигурации конфигуратор ругается что нехватает той или иной библиотеки. название библиотеки которое он сообщает не всегда соответствует названию пакета в Ubuntu. Из собственного опыта могу посоветовать поискать нужный пакет исключив префикс lib , если нашлось несколько пакетов различающихся приставкой -dev в названии то вам нужно установить именно -dev пакет (обычно он тянет за собой и не -dev пакет) Можно ещё поискать с помощью http://packages.ubuntu.com/ В ведя имя библиотеки в поиск по содержимому пакетов, также если найдётся dev и не dev нужны оба . ну или просто погуглить. Если эта информация оказалась полезной для вас, то советую почитать http://rus-linux.net/MyLDP/HOWTO-ru/...nux-HOWTO.html Вот тут http://forum.beep-media-player.org/v...ad.php?tid=182 не плохой список что нужно установить для сборки из исходников пакеты с буквами mm в конце описания это пакеты для C++ программ. Список для bmpx но подойдёт почти для любой GTK2/Gnome программы. Так что если не получается собрать посмотрите на этот список сверьте с тем что у вас стоит и может что умное в голову придёт X * Compile: libx11-dev * Runtime: libx11-6 GlibMM * Compile: libglibmm-2.4-dev * Runtime: libglibmm-2.4-1c2a GTK+ * Compile: libgtk2.0-dev gtk-doc-tools * Runtime: libgtk2.0-0 GTKMM * Compile: libgtkmm-2.4-dev * Runtime: libgtkmm-2.4-1c2a Glade * Compile: libglade2-dev * Runtime: libglade2-0 GladeMM * Compile: libglademm-2.4-dev * Runtime: libglademm-2.4-1c2a XML * Compile: libxml2-dev * Runtime: libxml2 XML++ * Compile: libxml++2.6-dev * Runtime: libxml++2.6c2a DBus * Compile: libdbus-1-dev libdbus-glib-1-dev * Runtime: libdbus-1-2 libdbus-glib-1-2 Alsa * Compile: libasound2-dev HAL * Compile: libhal-dev libhal-storage-dev * Runtime: libhal1 libhal-storage1 Gamin * Compile: libgamin-dev * Runtime: libgamin0 Neon * Compile: libneon25-dev * Runtime: libneon25 TagLib * Compile: libtagc0-dev * Runtime: libtagc0 Startup-Notify * Compile: libstartup-notification0-dev * Runtime: libstartup-notification0 Boost * Compile: libboost-dev libboost-filesystem-dev * Runtime: libboost-filesystem1.33.1 MusicBrainz * Compile: libmusicbrainz4-dev * Runtime: libmusicbrainz4c2a GStreamer * Compile: libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev * Runtime: libgstreamer0.10-0 libgstreamer-plugins-base0.10-0 __________________________________________________ _______ Если помогло жмем СПАСИБО |
Реклама: | Рекомендуем супермаркет КНС.ру - DHI-NVR5216-EI - Подарок каждому покупателю! | купить стол письменный для школьника | WhatsApp и Facebook Group | букеты фото | Выгодное предложение от интернет-магазина KNSneva.ru - ds-2cd2483g2-i - КНС Санкт-Петербург - мы дорожим каждым клиентом! |
07.11.2008, 14:49 | #2 |
ViP
Пол: Регистрация: 02.06.2006
Адрес: Украина
Сообщений: 3,318
Репутация: 935
|
Re: FAQ: Как компилить програмы из исходников!
Для начала readme или install.txt читать надо. Как правило там все расписано, и как правило по-аглицки-учите язык. Часто в комплекте идет скрипт build.sh или install.sh, который сам все сделает. Ну и вообще-то сборкой лучше пользоваться как можно реже, штатные репозитории рулят.
|
Сказали спасибо: |
08.11.2008, 18:38 | #3 |
Неактивный пользователь
Пол: Регистрация: 01.02.2008
Сообщений: 4
Репутация: 0
|
Re: FAQ: Как компилить програмы из исходников!
Если честно, то верхний пост - бред несусветный.
Такое впечатление, что человек только поставил себе Линукс, причем какую-нить Мандриву и решил показать, какой он крутой никсоид. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ПРОБЛЕМА С УДАЛЕНИЕМ ПРОГРАМЫ | adnagarak | Архив | 8 | 15.10.2009 08:11 |
Нужны примеры исходников работы с простейшей графикой | Denov | Borland C++ Builder | 1 | 13.06.2009 15:57 |
Можно ли устанавливать-компилить проги из сырцов НЕ в консоли? | ilch | Вопросы и проблемы | 4 | 07.02.2008 16:51 |
Слетают програмы | nzsv | Архив | 16 | 29.04.2007 20:38 |
Программы из исходников. | RSaga | Mac Os X | 12 | 05.02.2007 01:32 |
|
|