Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > Операционные системы > UNIX, Linux, MacOs для PC и другие ОС

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 07.11.2008, 13:48   #1
Banned
 
Регистрация: 21.08.2007
Сообщений: 23
Репутация: 53
Exclamation 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

__________________________________________________ _______

Если помогло жмем СПАСИБО
Dogy вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: Рекомендуем супермаркет КНС.ру - DHI-NVR5216-EI - Подарок каждому покупателю!купить стол письменный для школьникаWhatsApp и Facebook Groupбукеты фотоВыгодное предложение от интернет-магазина KNSneva.ru - ds-2cd2483g2-i - КНС Санкт-Петербург - мы дорожим каждым клиентом!


Старый 07.11.2008, 14:49   #2
DoubleSpace
ViP
 
Пол:Мужской
Регистрация: 02.06.2006
Адрес: Украина
Сообщений: 3,318
Репутация: 935
По умолчанию Re: FAQ: Как компилить програмы из исходников!

Для начала readme или install.txt читать надо. Как правило там все расписано, и как правило по-аглицки-учите язык. Часто в комплекте идет скрипт build.sh или install.sh, который сам все сделает. Ну и вообще-то сборкой лучше пользоваться как можно реже, штатные репозитории рулят.
DoubleSpace вне форума
 
Ответить с цитированием Вверх
Старый 08.11.2008, 18:38   #3
zs_ftp
Неактивный пользователь
 
Пол:Мужской
Регистрация: 01.02.2008
Сообщений: 4
Репутация: 0
По умолчанию Re: FAQ: Как компилить програмы из исходников!

Если честно, то верхний пост - бред несусветный.
Такое впечатление, что человек только поставил себе Линукс, причем какую-нить Мандриву и решил показать, какой он крутой никсоид.
zs_ftp вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПРОБЛЕМА С УДАЛЕНИЕМ ПРОГРАМЫ 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

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 19:29. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 2.99482 секунды с 13 запросами