Премини към съдържанието
  • Добре дошли!

    Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

    Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

     


ivoarch

Препоръчан отговор

Какво означава компилация на един софтуер?
 

Реших да направа едно малко "Howto" за компилиране от source  (линукс), надявам се да е полезно!

Опитал съм се да обесна, по на кратко, и само най важното (надявам се да нема пропуски).

 

Публикувано изображение

 

Това е процесът, който ви позволява да трансформирате изходният код на един софтуер, във напълно функционално приложение.

Във Гну-Линукс съществуват неколко различни форми, за компилирането на един софтуер.
Тези които ще разгледаме са "компилация Autoconf", и другата "компилация CMake".
И във двете, процедората е много подобна, a етапите които се следват, са едни и същи.

1. Изтегляне на изходният код.
2. Проверка на зависимостите.
3. Изграждане на програмата.
4. Инсталиране на файловете.

1 .Изтегляне на изходния код.
Първата стъпка е, да свалим изходният код на програмата. Най лесно е, като отворим броузерът, и отидем до уеб страницата на софтуера, и свалим изходният код. Обикновенно в повечето случай, идва във архив, най вероятно във формат tar.gz, но може да са, и други разширения като tar.bz2 - tgz - tar-xz – и т.н...

 

2. Какво са зависимостите?
Зависимости - това са пакети, библиотеки или софтуер от който, програмата която компилираме се нуждае, за да отговари на всички свои функций.

Тези библиотеки могът да бъдат инсталирани, през терминал, или със помоща на
приложения като Synaptic-Package-Manager за Debian/Ubuntu, и Yumex за Redhat/Fedora.

- Пример на такива пакети във Debian/Ubuntu.
<име на библиотека>-dev

- Пример на такива пакети във Redhat, Fedora, OpenSuse и т.н
<име на бибиотека-devel>

3.Изграждане на програмата.
На този етап, се изгражда базата на софтуера от изходният код, и от сега нататък
ще се използва терминала (без паника, Не Хапе!).

 

Преди да започнем да работим, трябва да разархевираме архива, това може да се
направи, с помоща на некое графично приложение, или през терминал след като напишем:

tar -xvf source-кода.tar.gz

Веднъж разархевиран, преминаваме към изграждането на програмата, като конфигурираме,
пътя където ще се инсталира тя, също включването и изключването на некой харайтеристики (само ако тя го разрешава).

3.1  Компилация със Autoconf
Autoconf - е инструмент за генериране на конфигурационни скриптове, които настройват
автоматично изходният код на софтуера, за да се адаптира, към различните Unix подобни системи.

За да зададете пътя, където да бъде инсталирана програмата, първо трябва да се предвижите до директорията, където преди това разархевирахме програмата.

cd /пътя/където/се-намира/програмата

След като вече сме там, изпълняваме командата която конфигурира пътя, където ще се инсталира прогрмата.

./configure --prefix=/usr

Във този случай програмата се инсталира, във директорията /usr, и една под директория, обикновено в папката /share .

Във случай, че софтуера разрешава, включването, и изключването на, характеристики, може да се използват собствени команди във програмата, които вече са зададени от програмиста.

 

Най често те са следните:

--enable-function (за разрешаването на некоя функция)
--disable-function(за забраняването на некоя функция)

И се използва със,командата ./configure, и нейните други опций като ./configre --prefix=/usr

Пример:

./configure --prefix=/usr --enable-cups --disable-gnutls

Във този пример,казваме на програмата да разреши сервиза за принтиране cups, и да забрани библиотеките gnutls, както и да инсталира прогрмата във /usr директорията.

Тези настройки се извършват благодарение на два файла configure и configure.ac .

3.2 Компилация със CMake
CMake е едно семейство от инструменти, разработено за създаване, тестване и опаковане на софтуер. CMake се използва за, управление на процеса на компилиране на софтуер, използвайки помоща на прости и независими файлове от платформата.
Също така, CMake генерира собствени make файлове,и работни пространства, които могът, да се използват в желаната среда на разработка.

Също като Autoconf, се нуждае първо да сте, разархевирали изходният код на програма,
както, и да отидете до директорията където се намира тя (виж стъпките по-горе).Също има и опцийте за директория където да се инсталира софтуера, също така, и вклюването и извключване на функций, но разбира се командите са различни.

Другата разлика е, че при компилация CMake се нуждае от една папка build, където да се работи (нещо като временна папка).
Може да бъде направена през файловият мениджър или през терминал, изпълвайки следната команда: (уверете се, че сте във папката на разархевираната прогрaма)

mkdir build

След което, трябва да се предвижим във нея.

cd build

После за да конфигурираме пътя където да бъде инсталирана програмата.

cmake .. --DCMAKE_INSTALL_PREFIX=/usr

За да включим или изключим функций, ако програмата го разрешава, се прави така:

-DUSE_FUNCTION:BOOL=ON (за разрешаването на функция)
-DUSE_FUNCTION:BOOL=OFF (за изключването на функция)

Също така, могът да бъдат изпълнати, със командата за настройка на пътя на инсталация.

cmake .. --DCMAKE_INSTALL_PREFIX=/usr -DUSE_CUPS:BOOL=ON -DUSE_GNUTLS:BOOL=OFF

Във този пример,казваме на програмата да разреши сервиза за принтиране cups, и да забрани библиотеките gnutls, както и да инсталира прогрмата във /usr директорията.

Всички тези настройки се извършват от файла "CmakeLists.txt".

Ако по време на процеса, при командите ./configure или cmake .. излезнат грешки или предупреждения, най често се дължи, поради липса на некоя зависимост. Според грешката коят ви излезне, трябва да тълкувате, коя от зависимостите липсва.

4. Инсталиране на файловете

Този процес създава последните файлове, тези които се инсталират. За това е, нужно да изпълните в терминала:

make

Така ще компелираме програмата, и тя ще създаде изпълнимите файлове, заедно със всичките библиотеки и конфигурационни файлове.

Накрая, последният етап e, просто да инсталираме прогрмата във пътя, който е определен. Това се получава се, като напишете в терминал:

sudo make install

Ако всичко завърши добре,би трябвало да имате нов път към менюто за програми, от където да можете да стартирате, и новата програма.

Линк към коментара
Сподели в други сайтове

Не може ли темата да се казва 'софтуер от source' или 'софтуер от изходен код' или 'копмилиране на изходен код' и т.н., защото linux от source звучи точно като linux from scratch, което е нещо много различно ...

Линк към коментара
Сподели в други сайтове

Не може ли темата да се казва 'софтуер от source' или 'софтуер от изходен код' или 'копмилиране на изходен код' и т.н., защото linux от source звучи точно като linux from scratch, което е нещо много различно ...

Просто се хванах за това заглавие, и ми хареса :), пък и вкрайна сметна не съм излъгал, всепак става въпрос за Линукс от source.

Сори ако съм ви подвел!

Линк към коментара
Сподели в други сайтове

Просто се хванах за това заглавие, и ми хареса :), пък и вкрайна сметна не съм излъгал, всепак става въпрос за Линукс от source.

Сори ако съм ви подвел!

За cmake DLIB_SUFFIX=64 :) 

За configure най-добре configure --help 

За make make DESTDIR

Линк към коментара
Сподели в други сайтове

За cmake DLIB_SUFFIX=64 :)

За configure най-добре configure --help 

За make make DESTDIR

Разбира се, но нали се сещаш, че ако седна да обеснявам всичко това, ще трябва да пиша цели романи.

Темата е доста дълга, и се опитах да опиша процеса ->(във повечето случай), възможно най разбираемо, и лесно за повечето потребители.

За това който иска, може да добавя интересни трикове към темата, но моля описвайте за какво служат работите/командите/опцийте, за да са полезни, и разбираеми на всички, точно за това е темата.

 

П.С Ако имате, и проблеми със инсталиране на некоя програма (от Source), също може да вмъквате тук запитванията си.

Линк към коментара
Сподели в други сайтове

.....
make
....

За съжаление това понякога не е вярно. Ако не тръгва може да се пробва

make all

или

make world

Ако отново не става трябва да се провери във файла Makefile какви са тарджетите и да се прецени кой да се ползва

Линк към коментара
Сподели в други сайтове

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

×
×
  • Добави ново...