2. Autoconf, automake a libtool z hlediska koncového uživatele

2.1 Instalujeme

Jak jsem již napsal, z hlediska koncového uživatele by mělo být instalování Vašeho balíčku programů pokud možno co nejjedodušší. V dalším textu předpokládám, že `pracujeme' na novém projektu s názvem Kopretina. Pravě jsme vydali novou versi kopretiny (3.2) a uživatel zápolí s distribučním archivem:

root@meadow:/usr/src# tar -xzvf kopretina-3.2.tar.gz
root@meadow:/usr/src# cd kopretina-3.2
root@meadow:/usr/src/kopretina-3.2# ./configure
root@meadow:/usr/src/kopretina-3.2# make
root@meadow:/usr/src/kopretina-3.2# make install

Myslím, že jsme již nemohli uživateli vyjít více vstříc. `configure' je skript (soubor příkazů pro shell), který si Váš systém `oťukne' a vytvoří příslušné konfigurační soubory a soubory Makefile. Pokud byl `configure' skript napsán korektně, není již zapotřebí dalších zásahů - stačí pouze napsat `make' a odejít na kafe či svačinu (úměrnou velikosti instalovaného software a nepřímo úměrné rychlosti počítače :)

2.2 Jak přizpůsobit chování `configure' skriptu

Většinou si však uživatel s holým příkazem `configure' nevystačí - často je zapotřebí změnit adresář, kam budou nainstalovány soubory, nebo je-li více možností konfigurace, je nutné poradit `configure' skriptu, které má volit (typický případ: vytvořit dynamicky sdílené knihovny či nikoliv a podobně).

Zde je krátký přehled často používaných parametrů:

--help
Vypíše seznam všech dostupných parametrů a jejich implicitní nastavení
--prefix=cesta
Nainstaluje program do podadresářů daného adresáře
        ./configure --prefix=/usr/local

(programy do /usr/local/bin či /usr/local/sbin, knihovny do /usr/local/lib, manuálové stránky do /usr/local/man atd).

--enable-..., --disable-..., --with-..., --without-...
Tyto parametry zakáží nebo naopak povolí různé vlastnosti programu. Pokud jsou v balíčku i knihovny (a autor použil libtool), pak zcela jistě využijete následující parametry:
        ./configure --disable-static --enable-shared

2.3 Jak ovlivnit překlad

Ovlivnit některé parametry překladače (například zapnout optimalizaci, nastavit cesty ke knihovnám) můžete nastavením standardních proměnných shellu - například:

CC
překladač jazyka C
CFLAGS
parametry při překladu pomocí $(CC)
CXX
překladač C++
CXXFLAGS
parametry při překladu pomocí $(CXX)
LDFLAGS
parametry pro linker (ld)
LIBS
knihovny, které má navíc linker připojit k programu

Příklad použití proměnných:

CFLAGS='-O2 -m486 -fomit-frame-pointer' LIBS='-L/some/obscude/libs' \
./configure --prefix=/why/not/here

2.4 Mám číst dál?

Pokud jste dočetli můj elaborát až na toto místo a kladete si otázku, zda máte pokračovat dále, začlenil jsem malý kvíz:

Jsem koncový uživatel,
který si sem tam něco nainstaluje a přehled, který jsem si právě právě přečetl, mi do konce života postačí. Raději si půjdu přečíst novinky ze světa free software
Kam jsem se to dostal?
- a proč se tu nehovoří o nejnovějším MS Visual C++ - tam přece nic podobného není zapotřebí (natož programátor!) - půjdu si stěžovat strýčkovi Billovi z hell://www.microsoft.com
Pracuji na free software projektu
a stránky mě velmi zaujaly - chtěl bych co nejdříve nabyté znalosti použít ve svém novém projektu. Nemůžu se dočkat následující kapitoly.

(c) 1998 0rfelyus