[Library] Wie erkennen, worauf eine so-Datei verweist?

16/09/2014 - 14:24 von Heinz-Mario Frühbeis | Report spam
Hallo,

bei einer meiner eigenen Libraries "libIDA" kann man lesen, wenn man z.
Bsp. "libIDA.so.1" mit "kate" öffnet, das da ziemlich am Ende
"libIDA.so.1" drin steht.
Die Lib besteht aus: libIDA.so, libIDA.so.1, libIDA.so.1.0,
libIDA.so.1.0.0 Und "libIDA.so.1" verweist auf "libIDA.so.1.0.0".

Bei z. Bsp. "libamarokocsclient.so.4" ist der Verweis auf
"libamarokocsclient.so.4.11.1".

Wo holt denn z. Bsp. Dolphin die Info her, das z. Bsp. "libIDA.so.1" auf
"libIDA.so.1.0.0" verweist, oder "libamarokocsclient.so.4" auf
"libamarokocsclient.so.4.11.1"?

Mit Gruß
Heinz-Mario Frühbeis
 

Lesen sie die antworten

#1 Markus Raab
16/09/2014 - 15:14 | Warnen spam
Hallo,

Heinz-Mario Frühbeis wrote:
bei einer meiner eigenen Libraries "libIDA" kann man lesen, wenn man z.
Bsp. "libIDA.so.1" mit "kate" öffnet, das da ziemlich am Ende
"libIDA.so.1" drin steht.
Die Lib besteht aus: libIDA.so, libIDA.so.1, libIDA.so.1.0,
libIDA.so.1.0.0 Und "libIDA.so.1" verweist auf "libIDA.so.1.0.0".



Das ist ein bisschen mehrdeutig bzw. missverstàndlich was du da schreibst.
Wie erkennst du das ""libIDA.so.1" drin steht"?
Was heißt "Die Lib besteht aus"?

Bei z. Bsp. "libamarokocsclient.so.4" ist der Verweis auf
"libamarokocsclient.so.4.11.1".

Wo holt denn z. Bsp. Dolphin die Info her, das z. Bsp. "libIDA.so.1" auf
"libIDA.so.1.0.0" verweist, oder "libamarokocsclient.so.4" auf
"libamarokocsclient.so.4.11.1"?



Mit ldd kannst du nachschauen gegen was ein Programm gelinkt ist, z.b.
ldd =kate
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6

der linke Teil ist statisch festgelegt, der rechte Teil wird durch ein
mehrstufiges Verfahren dynamisch beim Programmstart bestimmt. Das ist in
man 8 ld.so erklàrt.

Wenn deine Frage darauf abzielt von woher ldd die Info bekommt, dann schau
mal in "man elf" bzw., die tools readelf, nm,.. an. Im Besonderen könnten
dich die Symbole DT_NEEDED und DT_SONAME interessieren.

glg Markus

Ähnliche fragen