Portál AbcLinuxu, 2. května 2025 02:52
V diskuzi se občas objevují dotazy na to, jak si zkompilovat nějaký program. Většinou takové otázky pokládají začátečníci, kteří se o sestavení nějakého programu pokusili, protože jim určitý software chyběl. A první, co našli na stránkách hledaného programu, byla právě "svatá trojice". Přitom chtěného cíle mohli dosáhnout i mnohem méně trnitou cestou.
Pokud zjistíte, že vám chybí nějaký program, který potřebujete ke své práci, zkuste jej nejprve vyhledat pomocí balíčkovacího systému své distribuce, v naprosté většině případů potřebný software naleznete a nainstalujete během několika minut pomocí jednoho či dvou příkazů.
Může se stát, že na první pokus neuspějete (potřebný balíček není v databázi balíčkovacího systému nalezen) - nejčastěji k tomu dochází u různých kodeků sloužících k přehrávání multimediálního obsahu.
Tyto programy bývají šířeny pod nějakou omezující licencí, a proto je nebylo možno přidat do standardních repozitářů. Podrobné informace naleznete v dokumentaci vaší distribuce.
Běžně jsou programy dostupné v balíčkovacích systémech většiny distribucí kompilovány s nějakým průměrným nastavením, které nevyužívá všechny možnosti programu. Pokud máte speciální požadavek, je pro vás sestavení ze zdrojového kódu řešením. Pak skutečně může přijít ke slovu "svatá trojice", což je ve skutečnosti posloupnost tří příkazů, s jejichž pomocí lze většinu zdrojových kódů, které využívají GNU Autotools, připravit ke kompilaci, zkompilovat a nainstalovat:
./configure make make install
Ti z vás, kteří mají chuť experimentovat, mohou zkusit své štěstí třeba při kompilaci webového prohlížeče Links. Je to relativně malý program a jeho sestavení by na průměrném stroji nemělo trvat dlouho.
Tenhle šikovný program, který je v základní konfiguraci textový, ale dokáže pracovat i v grafickém rozhraní, které naleznete ve většině distribucí. Chcete-li se dozvědět více, navštivte domácí stránku prohlížeče na adrese links.twibright.com. Informace potřebné ke kompilaci programu.
Nejčastěji první pokusy o kompilaci programu končí hláškou skriptu ./configure
, že chybí nějaká knihovna nebo její vývojová verze.
Knihovna je část programu, která obsahuje funkce potřebné pro výkon nějaké činnosti, například vypsání textu na obrazovku, jak si ukážeme dál.
#include stdio.h main() { printf("Ahoj svete\n"); }
Účelem programu je vypsat na obrazovku nápis Ahoj světe
. Samotné vypsání požadovaného textu na obrazovku zajišťuje funkce printf.
Výhodou funkce je to, že programátor se zabývá pouze tím, co udělat, například vypsat text na obrazovku, a neřeší, jak to udělat, to má na starosti funkce.
Vývojářské verze knihoven obsahují hlavičkové soubory (obyčejně s příponou .h
). Pokud máte nainstalovány tyto knihovny, tak můžete na svém systému kompilovat programy, které ke svému běhu využívají tyto knihovny.
Vývojářské verze knihoven nebývají součástí běžné instalace a právě jejich absence bývá nejčastější příčinou problémů s kompilací.
Další nevýhodou ručně kompilovaných programů je, že si sami musíte ohlídat, zda ve vašem programu nebyla odhalena nějaká bezpečnostní chyba a případně se postarat o její odstranění.
Častým argumentem pro ruční kompilaci nějakého programu bývá, že chcete mít novější verzi nějakého softwaru, než je ta, která je obsažena ve vaší distribuci.
Tuto situaci lze řešit vhodným nastavením zdrojů softwaru. Podrobnější informace o tom, jak to řešit v Debianu, naleznete v manuálu.
O správě programů v Linuxu by toho šlo napsat ještě hodně, ale to už přenechám povolanějším. Pokud se mezi těmi, kdo tento zápisek četli, našel alespoň jeden člověk, který se vyhne chybám, které jsem nedávno také udělal, pak splnil svůj účel.
Svatá trojice už dávno není jediný způsob jak instalovat software ze zdrojových kódů.Jj, třeba takový apt-get source, apt-get build-deb a dpkg-buildpackage, to umí věci. Člověk si skoro může udělat hybrid mezi Gentoo a Debianem
programy v jave pomoci antV horším případě pomocí mavenu - u antu je jednoduché patchnout properties, nebo
build.xml
, nebo .ent
, když mi vzdoruje, ale maven nade mnou zatím s přehledem vítězí :-|
debian/rules
nebo ve .spec souboru a že tyto volby občas vynucují další závislosti. ./configure --prefix=/usr/localTam snad patri.
I když je mandriva velice intuitivní, tady někde "soudruzi udělali chybu", chybí ta třešnička na dortu.
Vlákno o překladech, přejímání a dalších věcech souvisejících s očekáváním čtenářů bylo přesunuto do samostatné diskuze, protože bylo pod tímto článkem off-topic. Máte-li zájem v debatě pokračovat, přispívejte prosím do osamostatněné diskuze.
apt-build build-source jmeno_programu
dh_make
, a pak fakeroot debian/rules binary
tar -xjf pkgname-x.y.z.tar.gz
cd pkgname-x.y.z
mkdir _build
cd _build
../configure --prefix=/opt/pkgname
make
make DESTDIR=/test-install install
tak je vždy rozumné volat make install s parametrem DESTDIR
Přesněji: proměnnou, ne parametrem.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.