Jak v aplikaci zmenit "odkaz" na sdilenou knihovnu

Zdeněk Böhm zdenek.bohm na gammarus.cz
Pondělí Září 15 09:50:10 CEST 2003


Ahoj,

existuje nejaka utilita, ktera dokaze v binarce zmenit, a ted nevim, jestli
to nazvu dobre, odkaz na sdilenou knihovnu?
Jde mi o tuto vec - chci prelozit par utilit s alternativni libc knihovnou
namisto GNU Glibc. Konkretne se jedna o uClibc.
Utility prekladam na nainstalovanem systemu, ktery pouziva Glibc, takze
soubory uClibc mam nainstalovane v jinem adresari, nez /lib. Do /lib je dat
nemuzu, protoze bych prepsal soubory patrici ke Glibc (maji stejne nazvy) a
tim bych si, predpokladam, sejmul bezici system. Kdyz se na prelozene
binarky utilit mrknu pomoci ldd, tak mi vypise (zcela spravne) cestu ke
sdilenym knihovnam prave v tom alternativnim adresari. Ovsem ja ty prelozene
utility chci pouzit na jinem systemu, kde uz uClibc knihovny budou v /lib
(protoze tam macek Glibc nebude).
Bohuzel ld.so i potom hleda sdilene knihovny v tom alternativnim adresari,
kde byli pri prekladu, takze jedina cesta, jak takto prelozene utility
spustit na jinem systemu je mit bud knihovny jinde nez v /lib (to mne prijde
jako docela prasarna), nebo je nechat v /lib, ale zaroven vytvorit i stejny
adresar, v jakem byli pri prekladu a do nej dat symlinky do /lib. Ani toto
reseni se mi moc nelibi.
Takze, existuje neco, co dokaze zmenit v binarce odkaz napr. z
/lib/uclibc/libc.so na /lib/libc.so?
Prolizal jsem man stranky utilit, ktere by to snad mohly umet (ldd, ld,
ldconfig), ale nasel jsem jen parametr -r u ldd, ktery mel v popisu neco, co
by mohlo odpovidat mym pozadavkum, ale nenasel jsem zadny priklad, jak to
pouzit (a system pokus/omyl me k cili taky nedovedl), takze ani nevim,
jestli je to opravdu na tohle.

S pozdravem Zdenek Bohm



Další informace o konferenci Linux