ldconfig, ldd a LD_LIBRARY_PATH

Hana Skoumalova hana.skoumalova na ff.cuni.cz
Pondělí Prosinec 11 15:06:26 CET 2006


Dobrý den,

narazila jsem na problém při instalování programu PhotoViewer 
(http://pcernoch.wz.cz/PhotoViewer/en_index.html). Postupovala jsem 
podle návodu:

1. jpeg a ImageMagick jsou součástí distribuce, tudíž je není třeba 
instalovat.
2. Nainstalovala jsem knihovny pro Kylix 3 (včetně spuštění ldconfig!).
3. Stáhla jsem si binárku photov + další potřebné soubory.

Když spustím photov, dostanu hlášku:

photov: symbol lookup error: photov: undefined symbol: initPAnsiStrings

která se objevila proto, že nenašel tu kylixovou knihovnu 
libborqt-6.9.0-qt2.3.so. Přitom:

- ldconfig o té knihovně ví (podívala jsem se do ld.so.cache).
- Když si pustím strace, vidím, že si program photov otevřel soubor 
/etc/ld.so.conf, ale pak tu knihovnu hledá všude možně, jenom ne v těch 
adresářích, které jsou tam uvedené.
- ldd se vůbec o knihovně libborqt-6.9.0-qt2.3.so nezmiňuje.

Našla jsem workaround, a sice spuštět ten program takhle:

~> env LD_LIBRARY_PATH=/usr/X11R6/lib:/usr/local/lib photov

ale ráda bych si udělala trochu jasno, co se to tam vlastně děje. 
Myslela jsem, že ldconfig se používá proto, aby člověk nemusel čarovat s 
LD_LIBRARY_PATH. Proč program tu knihovnu nenašel? A proč nebyla ve 
výpisu z ldd?

Hanka Skoumalová



Další informace o konferenci Linux