Hlavní navigace

Programování pod Linuxem pro všechny (7)

Jakub Matys

V dnešním dílu dokončím povídání o libtool. Naučíte se ladit programy vytvořené pomocí libtool, instalovat knihovny a spustitelné programy.

Je celkem samozřejmé, že vámi napsaný program před „vypuštěním“ odladíte. Pokud je program spojen s knihovnami pomocí libtool, bude ladění probíhat nestandardním způsobem. Používáte-li program gdb, nestačí zapsat:

# gdb hell
GNU gdb 2002-04-01-cvs
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-linux"..."hell": not in executable format: File format not recognized

(gdb) quit
# 

Jak jsem psal v minulém dílu, soubor ./hell je skript, a ne binární soubor (jak také upozorňuje program gdb). Celkem logicky by vás mohlo napadnout, že spustíte binární soubor .libs/hell. Ovšem jak vás přesvědší další řádky, to je též nesprávný postup:

# gdb .libs/hell
GNU gdb 2002-04-01-cvs
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-linux"...
(gdb) break main
Breakpoint 1 at 0x8048547: file main.c, line 29.
(gdb) run
Starting program: ~/.libs/hell
~/.libs/hell: can't load library 'libhello.so.2'

Program exited with code 020.
(gdb) quit
# 

Protože nejsou nainstalovány knihovny, nemohl je program načíst. Tyto dva problémy řeší volba –mode=execute:

libtool --mode=execute gdb hell
GNU gdb 2002-04-01-cvs
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-linux"...
(gdb) break main
Breakpoint 1 at 0x8048547: file main.c, line 29.
(gdb) run
Starting program: ~/.libs/hell

Breakpoint 1, main(argc=1, argv=0xbffffc40) at main.c:29
29  printf ("Welcome to GNU Hell!\n");
(gdb) quit
The program is running. Quit anyway (and kill it)? (y or n) y
# 

Jak je vidět, při použití volby –mode=execute lze program spustit v ladícím programu a provádět všechny potřebné akce.

Instalování knihoven

Při instalaci můžete použít příkazů: cp a install:

# libtool --mode=install cp libhello.la /usr/local/lib/libhello.la
cp libhello.la /usr/local/lib/libhello.la
cp .libs/libhello.a /usr/local/lib/libhello.a
ranlib /usr/local/lib/libhello.a
# 

nebo

#libtool --mode=install install -c libhello.la /usr/local/lib/libhello.la
install -c .libs/libhello.so.0.0 /usr/local/lib/libhello.so.0.0
install -c libhello.la /usr/local/lib/libhello.la
install -c .libs/libhello.a /usr/local/lib/libhello.a
ranlib /usr/local/lib/libhello.a
# 

První případ platí pro systémy, které nemají podporu dynamických knihoven, druhý pro systémy s touto podporou. Nyní zbývá už jen vytvořit linky na dynamické knihovny a „všelijak“ je nakonfigurovat. K tomu slouží příkaz ‚libtool -n –mode=finish libdir‘:

# libtool -n --mode=finish /usr/local/lib
PATH="$PATH:/sbin" ldconfig -m /usr/local/lib
------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

To link against installed libraries in a geven directory,
LIBDIR, you must use the '-LLIBDIR' flag during linking.

 You will also need to do one of the following:
   - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the 'LD_RUN_PATH' environment variable
     during linking
   - use teh '-RLIBDIR' linker flag
See any operating system documentation about shared libraries
for more information, such as the ld and ld.so manual pages.
------------------------------------------------------
# 

Po dokončení těchto kroků můžete používat knihovny bez jakýchkoliv omezení.

Instalování spustitelných programů

Pokud jste použili libtool ke spojení knihoven a spustitelných programů, musíte použít libtool k instalování těchto programů po nainstalování knihoven. Instalování je opravdu velice jednoduché:

# libtool install -c hell /usr/local/bin/hell
install -c .libs/hell /usr/local/bin/hell
#

Pro dnešek je to vše. Tento a předchozí díl měly být jakýmsi úvodem do libtool. Koho tato problematika zajímá více, ten ať se porozhlédne po dokumentaci. V příštím dílu se budu zabývat procesy, konkrétně vytvořením nového procesu.

Našli jste v článku chybu?

5. 3. 2004 18:15

s0 (neregistrovaný)

jak s kuckama rikame: auto[black]magic

5. 3. 2004 12:48

optik (neregistrovaný)

Ja osobne sem se s libtoolem samostene nesetkal, vzdy jen v kombinaci autoconf, automake, libtool.

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Podnikatel.cz: Změny v cestovních náhradách 2017

Změny v cestovních náhradách 2017

120na80.cz: 5 nejčastějších mýtů o kondomech

5 nejčastějších mýtů o kondomech

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

DigiZone.cz: TV Philips a Android verze 6.0

TV Philips a Android verze 6.0

Měšec.cz: Jak levně odeslat balík přímo z domu?

Jak levně odeslat balík přímo z domu?

Vitalia.cz: Pamlsková vyhláška bude platit jen na základkách

Pamlsková vyhláška bude platit jen na základkách

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Podnikatel.cz: Snížení DPH na 15 % se netýká všech

Snížení DPH na 15 % se netýká všech

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky