Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Kompilujeme ze zdrojového kódu - základní schemata

Každý pokročilejší uživatel GNU-Linuxu se jednoho dne dostane do situace, kdy chce vyzkoušet poslední verzi nějakého programu, ale binární balíčky pro jeho distribuci ještě nejsou k dispozici. Tehdy většinou sáhne po vlastní kompilaci. Dnes se dozvíme, jak pracují základní kompilační schemata.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Ke kompilaci jakéhokoliv programu ze zdrojového kódu potřebujeme podrobný návod. Kromě těch nejmenších projektů se dnes používá téměř výhradně strojově čitelný návod – Makefile. Jeho zpracováváním se zabývá specializovaný program make. Ten se nachází v každé UNIXové distribuci (v GNU-Linuxu nejčastěji GNU Make).

Je to již letitý program, a protože je psaní makefilů pro velké a víceplatformní projekty poněkud pracné, objeví se občas projekty, které se snaží vytvořit jeho alternativu – za všechny jmenujme například Jam.

Většího rozšíření však dosáhly projekty, které sice používají standardní formát Makefile, ale soubory vytvářejí automaticky pomocí speciálních skriptů z nějakého metaformátu.

V první řadě je to skupina GNU programů pro generování souborů Makefile ze souborů Makefile.in z balíčků Autoconf,

Libtool a GNU gettext. K nim se pojí Automake, který slouží ke generování těchto souborů Makefile.in ze souborů Makefile.am. Programy generují skript configure, který prověří systémové závislosti a vygeneruje korektní makefily.

Druhou významnou skupinou je starší generátor xmkmf, který byl vytvořen v rámci projektu X-Window, aby usnadnil tvorbu knihoven a aplikací pro X.

Třetí skupinou jsou projekty, které generují soubory Makefile ve svém nativním jazyce – projekty v Perlu ze souborů Makefile.PL, projekty v Pythonu ze souborů setup.py atd.

Čtvrtou skupinou jsou balíky, které mají své vlastní generátory – zmiňme namátkou Sendmail, Procmail, Perl nebo projekt SING (Schily Is Not Gnu), použitý pro kompilaci cdrtools.

./configure ; make ; make install

Toto schéma vychází z programu Autoconf. Je to program, jehož účelem je provést řadu testů k ověření konfiguraci počítače a přizpůsobit kompilaci podle ní.

Za onou „magickou trojicí“ stojí celá řada programů, jejichž správná funkce je podmínkou toho, aby kompilace proběhla hladce.

K analýze zdrojového kódu slouží autoscan. Ten vygeneruje soubor configure.scan. Programátor ho vyedituje a dopracuje a poté přejmenuje na configure.in (nebo

configure.ac). Zároveň vytvoří i soubory Makefile.in – vzory pro vytvoření souborů Makefile – a může vytvořit nové testy a umístit je do souboru acinclude.m4, acsite.m4 nebo podobného.

Vytváření souborů Makefile.in a testů je ovšem nudná práce, proto ji většina programátorů přenechává programům z balíku Automake a místo toho ručně píše soubory

Makefile.am

Zde končí ruční zpracování.

V tomto stavu nalezneme většinu balíků například na CVS. Bývá k nim přibalen soubor autogen.sh – skript s instrukcemi, jak z dodaných souborů vytvořit plnohodnotný balík: Program aclocal z balíku Automake vygeneruje soubor testů aclocal.m4. Volitelně se spouští i program

libtoolize, který vytvoří soubory nutné pro tvorbu knihoven, a gettextize, který vytvoří pomocné soubory pro tvorbu lokalizovaných aplikací na všech platformách. Pak program autoheader vytvoří soubor config.h.in a program autoconf vytvoří skript configure. Nakonec skript automake vyrobí soubory Makefile.in ze souborů

Makefile.am

Po těchto úpravách je balík připraven k distribuci (a program autogen.sh již nebude potřeba).

Po rozbalení na cílové platformě se spouští skript configure (autoconf podporuje i křížovou kompilaci pro jinou platformu, ale tím si nebudeme popis komplikovat). Skript configure načte některé systémové proměnné a parametry předané na příkazové řádce. Může též načíst výsledky dříve provedených testů (pro opakovanou konfiguraci nebo křížovou kompilaci) ze souboru config.cache a spustí řadu připravených testů. Přitom zaznamenává výsledky a generuje protokol o činnosti – config.log. Po provedení všech testů vygeneruje ze souborů Makefile.in soubory

Makefile a ze souboru config.h.in soubor config.h. Zaktualizuje soubor config.cache a vygeneruje pomocný soubor config.status pro případnou další konfiguraci.

Tím je balík připraven na spuštění make.

Proběhle-li vše v pořádku, stačí zadat make install a je hotovo!

Jistě se ptáte, proč používat něco tak složitého a nepřehledného, abychom provedli konfiguraci malého balíčku. Je zde mnoho důvodů:

Psát přenositelné aplikace není nijak jednoduché. Na některých platformách chybějí v hlavičkových souborech definice důležitých proměnných nebo funkcí, na jiných platformách jejich definice naopak způsobí chybu. Jindy je nutné vložit hlavičkový soubor jiného jména. Stejná funkce může být na různých platformách v různých knihovnách a může vyžadovat další pomocné knihovny. I vlastní knihovny se vytvářejí na různých platformách různě. Spustitelné soubory mohou vyžadovat přípony a mohou být umísťovány do jiné hierrarchie… Přenositelné testy je nutné psát pouze za pomoci univerzálně dostupného holého Bourne Shellu a základní verze programu

sed.

To ještě není všechno, co programy kolem Autoconf dokáží. Skriptu configure je možné jednoduše předat požadované volby pro kompilátor (např. pro optimalizaci), typ vytvářených knihoven či požadavky na změnu cílového umístění souborů. Autoconf samozřejmě podporuje instalaci do distribučního adresáře pro snadné vytváření binárních balíčků.

Programy lze též kompilovat mimo zdrojový adresář – ten pak zůstává beze změny a nepotřebujeme ani právo zápisu do něj:

tar -z -x -f balik-verze.tar.gz
mkdir build
cd build
../balik-verze/configure --volby
make

Automake navíc nabídne mnoho dalších užitečných cílů (targetů) pro make. Za všechny jmenujme:

make install-strip: instalovat binární soubory bez ladicích informací

make uninstall: odinstalovat soubory

make clean: vymazat z pracovního adresáře zkompilované výsledky

make distclean: vymazat z pracovního adresáře všechny generované soubory

make dist: vytvořit distribuční balíček se zdrojovým kódem

make distcheck: vytvořit distribuční balíček se zdrojovým kódem a ověřit jeho funkčnost

xmkmf

Xmkmf je generátor souborů Makefile, vytvořený původně pro kompilaci X-Window. Je však použitelný i ke kompilaci aplikací. Na rozdíl od Autoconfu není navržen univerzálně, ale na míru kompilaci X. Jeho proměnné popisují stav jednotlivých komponent X, požadované knihovny, jejich jména apod.

Výchozím souborem je ručně psaný Imakefile. Tento soubor zpracuje xmkmf. Na pomoc si vezme systémový konfigurační adresář /usr/X11R6/lib/­X11/config, v němž najde definice pro jednotlivé platformy, a místní konfigurační soubor

host.def, popisující další úpravy konfigurace. Kompilační volby a další hodnoty se zadávají při kompilaci X a xmkmf je použije jako implicitní. Xmkmf vygeneruje soubor Makefile v hlavním adresáři projektu.

Dalšími kroky mohou být make Makefiles, který vygeneruje soubory Makefile v podadresářích, make includes, který vytvoří generované hlavičkové soubory, a make depend, který vytvoří tabulky závislostí.

Pak následuje vlastní kompilace příkazem make a instalace pomocí make install. Po ní ještě následuje make install.man pro instalaci manuálových stránek. Pokud se jedná o knihovnu, make install.sdk nainstaluje hlavičkové soubory (ve staších verzích XFree86 to bylo make install.linkkit).

make ; make install

Toto schéma se používá tam, kde byly soubory Makefile napsány ručně.

Před kompilací je často nutné ručně vyeditovat soubor Makefile, abychom změnili instalační adresář, volby optimalizace, cestu k některým programům apod. Kolik cílů programu make je implementováno, záleží pouze na programátorovi a liší se balík od balíku.

davame_internetu_obsah
       

textový popis

Nejstarší schéma, jak kompilovat, byl prostý návod či skript s příkazy. S tím se dnes setkáme pouze u projektů sestávajících z jediného zdrojového souboru. Kompilace se provádí pomocí cc optimalizační_a_dal­ší_volby soubor.c -o soubor a výsledek se instaluje ručně.

Školení: Hackujeme operační systém Android

 

Školení vám ukáže, jak se dostat k Linuxu (tzv. "rootování"), který se pod hezkou tváří Androida skrývá a jak ho naplno využít. Pomůže vám to při záloze dat, zvětšování prostoru pro aplikace nebo sdílení připojení k internetu a pokud chcete z telefonu dostat opravdové maximum, ukážeme vám, jak v něm vyměnit kompletní systém za lepší.

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 3,15

Přehled názorů

celkom dobry clanok
rajo 12. 8. 2002 04:41
Nový
jo, dobry clanek :-)
SMRT 12. 8. 2002 08:57
Nový
└ 
Re: jo, dobry clanek :-)
zemiak 12. 8. 2002 13:28
Nový
instalace Gnome2
Mr. Jumper 12. 8. 2002 10:10
Nový
└ 
Re: instalace Gnome2
anonymní uživatel 22. 3. 2006 09:51
Nový
odinstalace
Kolcon 12. 8. 2002 13:30
Nový
├ 
Re: odinstalace
tap 12. 8. 2002 13:39
Nový
│
└ 
Re: odinstalace
anonymní uživatel 12. 8. 2002 19:33
Nový
│
 
└ 
Re: odinstalace
tap 13. 8. 2002 09:09
Nový
├ 
Re: odinstalace
gmmns 12. 8. 2002 15:14
Nový
│
└ 
Re: odinstalace
anonymní uživatel 12. 8. 2002 19:35
Nový
└ 
Re: odinstalace
ptr 12. 8. 2002 18:56
Nový
 
└ 
Re: odinstalace
anonymní uživatel 12. 8. 2002 19:37
Nový
Fajn clanek
bObr 15. 8. 2002 00:22
Nový
i386
Kamil 18. 8. 2002 12:26
Nový
FreeBSD
wretch 26. 8. 2002 14:35
Nový
Namet na pokracovania
anonymní uživatel 28. 8. 2002 14:40
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem