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