5. Libtool 1.2

Preskocte prosim nekolik odstavcu, pokud Vas po predchozich kapitolach zacinaji nudit odstavce, ve kterych popisuji, jak je svet operacnich systemu a jejich nastroju mistem naprosteho zmatku a radoby-standardu, ktere za prvni mezi maji zcela jinou podobu a jak se s pomoci GNU Libtool nastane raj na zemi.

Svet operacnich systemu a jejich nastroju je mistem naprosteho zmatku....

Prestoze se rozhodnete pouzivat ve svem projektu Libtool, obavam se, ze ani pro Vas raj hned tak nenastane. Ovsem na druhou stranu si usetrite mnoho sil, nebot nebudete rvat na lesy, kdo a proc vymyslel tak obskurni parametr pro vytvoreni sdilene knihovny. On se jiz nekdo vztekal za Vas a sve poznatky shrnul do Libtool - zobecneni pro vyrobu sdilenych knihoven.

5.1 Libtool, autoconf a automake

Libtool lze pouzivat jak samostatne, tak spolu s jiz popsanymi nastroji. Ve svem referatu se vsak budu venovat pouze druhemu zpusobu - je totiz az prekvapive jednoduchy.

5.1.1 configure.in

AM_PROG_LIBTOOL je jediny test navic, ktery musite pri pouziti libtool do configure.in pridat. Toto makro prida ctyri nove parametry pro configure skript - jiz drive zminene --enable-shared, --disable-shared, --enable-static, --disable-static. Dale prida test, ktery si "proklepne" na pocitaci nainstalovane nastroje a zjisti, zda je vubec mozne sdilene knihovny vytvorit.

5.1.2 Makefile.am

Pro sdilene knihovny pouzijete v Makefile.am primarni promennou LTLIBRARIES. Ve jmenech knihoven vsak neuvedete pripony .a ci .so, ale .la:

lib_LTLIBRARIES = libkvetiny.la
bin_PROGRAMS = pampeliska jitrocel

libkvetiny_la_SOURCES = stonek.c list.c kvet.c kvet.h
libkvetiny_la_LDADD = -lm

jitrocel_SOURCES = jitrocel.c
jitrocel_LDADD = libkvetiny.la

Jednoduche, ze? Vse ostatni (a neni toho malo - linkovani, preklad s/bez parametru -fPIC,...) za Vas obstara libtool.

Vsimnete si tez zpusobu, jakym je k jitroceli pripojena kvetina (prirovnani zacina kulhat, a ja nevim proc :) - misto obvykleho -lkvetina napisete jmeno .la souboru. Proc doufam bude zrejme z nasledujicich odstavcu.

5.2 Adresar .libs

Pote, co jsme si rekli, jak libtool pouzit spolu s ostatnimi nastroji, zkusime se letmo podivat tez pod poklicku. Prvni vec, ktera Vas jiste zarazi, bude .libs adresar, ktery si libtool vytvori a dale fakt, ze libkvetiny.la je pouze textovy soubor, jitrocel je skript a vsechny binarni soubory (knihovny a programy) jsou v tajemnem adresari .libs.

Pouziti sdilenych knihoven s sebou prinasi rozlicne problemy - napriklad system o nich musi dozvedet, jinak by je nemohl nacist (knihovny musi byt nainstalovany ve standardnich adresarich). Program jitrocel je slinkovan s knihovnou, ktera jeste neni nainstalovana - system o ni "nevi". Proto abychom program jitrocel mohli vyzkouset jeste pred samotnou instalaci, misto programu jitrocel nalezneme skript, ktery zaridi vse potrebne a teprve pak zavola program, ktery je schovan v adresari .libs.

5.3 Zaver

Kraticka kapitolka si tez zaslouzi kratky zaver. Abych Vam vynahradil absenci prikladu, rad bych Vas upozornil na nektere vlastnosti libtool, ktere jsem Vam jaksi zatajil, protoze sli jiz nad ramec meho referatu.

Je casto vyhodne pouzit sdilene knihovny pro implementaci tzv plug-ins - casti programu, ktere nejsou pouzivany casto a nahraji se do pameti (pres funkci dlopen) pouze pri pouziti dane vlastnosti. Ovsem nektere platformy bohuzel vubec nepodporuji sdilene knihovny - a tak libtool pomuze emulovat proces nahrani plug-inu (sdilene knihovny).

O dalsich hratkach s libtool se vice dozvite v manualu (info libtool :).


(c) 1998 0rfelyus