ldconfig, ldd a LD_LIBRARY_PATH

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Pondělí Prosinec 11 15:59:38 CET 2006


On Mon, 11 Dec 2006, Hana Skoumalova wrote:

> 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:

Tohle není normální hláška, co se objevuje, když dynamic linker nenajde
dynamickou knihovnu...

> - 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é.

ld.so.conf? Hm? To je konfigurák ldconfig, dynamic linker ho vůbec
nepoužívá.

> - ldd se vůbec o knihovně libborqt-6.9.0-qt2.3.so nezmiňuje.

Opravdu ho nevypisuje ldd? To by ale znamenalo, že tu knihovnu načítá
někdo ručně až ex post. A možná je ten někdo až moc iniciativní (a prase),
snaží se implementovat hledání knihovny ve své režii a dlopen() dát už
hotovou absolutní cestu a nějak to nezvládá dělat správně.

Načítání knihovny přes dlopen() by zároveň vysvětlovalo, proč její
samotné nenalezení nebyla fatální chyba a proč to umřelo až při pokusu
vlézt na neresolvovaný symbol.

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux