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

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

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

     


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 какви са тарджетите и да се прецени кой да се ползва

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

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

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

  • Разглеждащи това в момента   0 потребители

    • Няма регистрирани потребители разглеждащи тази страница.
  • Горещи теми в момента

  • Подобни теми

    • от Недко
      Здравейте !

      Преди години в предаването "Микрофон и мишка" на Дарик Радио чух, че компютър с Linux може да се използва като антивирусен "филтър", или изобщо средство за защита на интернет трафика на компютър с Windows.
      В моя случай дори е належащо, защото имам компютър с XP, която вече не се поддържа от MS.
      Наскоро ме "светнаха", че такива машини не само са лесни за заразяване, но и били цел за някакви ботове, създадени да сканират нета и да откриват такива компютри. 
      Та, на въпроса с филтриращия Linux компютър. Дали все още е актуално такова решение, дали има ефект, 
      има ли писано някъде в нета за него и описано как се прави ?
      Моля за някаква информация, съвет, линк на български, руски, английски, немски ...
      или дори само за правилна формулировка на въпроса към Гугъл !

      Предварително ви благодаря !

      P.S. Да уточня, че имам други лаптопи с Linux Mint 20.2, но този с ХР искам да си остане така.

      Евентуално, като вариант, инсталиране на XP във виртуална машина на Linux система,
      дали е ефективно решение за защита на ХР-то ?
       
    • от 5TarDimitrov
      Здравейте, как може да се възстонови изчезнал ИМЕИ на самсунг А22 след префлашване(пробвано е да се върне оригиналния софтуер). Или ако знаете сервизи във Варна, които се занимават с оправяне на софтуерни проблеми.
    • от vpvelev
      Здравейте!
      Отварям отделна тема за още една Linux дистрибуция - Gentoo.
      Много са чували за нея, но малко са я ползвали. Причината е, че трудно (това е относително) се инсталира и изисква много време, защото всичко се компилира от изходен код. Последното пък изисква по-мощен хардуер, а не всеки разполага с такъв.
      При мен се случи така, че първото ми запознаване с Линукс беше имено с Gentoo Linux (нямам точен спомен, но преди 2005 година беше). Но не защото знаех нещо за линукс или за Gentoo, а защото не знаех какво ме очаква.  Но се оказа, че съм имал късмет да попадна на тази дистрибуция, за да науча поне нещо за линукс.
      И от тогава, тъй като не съм имал подходящ компютър (поне така съм си мислел) до преди няколко дена не обръщах внимание на тази дистрибуция.
      Тия дни я инсталирах и засега работи нормално всичко. Затова и отварям тази тема за новини, дискусии, помощ и др.
      Инсталацията я направих от съществуваща при мен друга линукс дистрибуция - Arco Linux. По начало Gentoo може да се инсталира и от други дистрибуции. Този начин за инсталиране, поне за мен е за предпочитане, особено за тия, които не са много запознати, а и не искат да си загубят другата дистрибуция.
      При този вид на инсталация не са необходими никакви флашки и дискове, а освен това се инсталира в графична среда и се ползват и четат различни статии и разяснения. Така инсталацията става много лесно. Дори може и да се прекрати, ако някой се уплаши или му омръзне и след време може пак да я продължи.
      Ето няколко линка за това. И аз ще покажа по-нататък как протече при мен инсталацията и какви проблеми срещнах.
      https://www.wikihow.com/Install-Gentoo-Linux-from-Ubuntu
       
      Отваряте терминала и започвате
      Използвах тия два линка в началото, но след това направих нещо средно м/у тях. Но това зависи от мощността на компютъра или какъв профил ще изберете:

      Важното е да не се отказвате лесно след първите неуспехи.

       

    • от дръндю
      вече не помня с коя програма съм го правил, защото мислех, че ще я ползвам еднократно
      ама сега се оказа че ми трябва
      намерих си нов графичен драйвър и искам наново да си направя един изпълним файл за всички драйвъри, но не помня с коя програма съм го правил
      давайте идеи за такава програма
    • от Теодор Тодоров
      За забравената парола на BIOS-а нищо не reset-на самата парола ще инсталирам Windows 8.1 На друг диск, защото не знам как се инсталира plop boot manager под linux, Гледах клипове как се инсталира plop под linux но нищо не разбрах от него
×
×
  • Добави ново...

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите Условия за ползване