Pagina 1 di 1

ld-linux vs readelf

Inviato: mar 15 apr 2008, 16:10
da Dani
Come mai su alcuni eseguibili i due programmi in oggetto danno risultati diversi ?
Ad esempio sul mio sistema i comandi "/lib/ld-2.5.so --list /usr/bin/mplayer" e "readelf -d /usr/bin/mplayer" danno risultati diversi, o meglio il primo comprende il secondo ma non viceversa.
In breve mi trovo davanti due possibili situazioni differenti (dipende dagli eseguibili esaminati):
- Nel primo caso ld e readelf mostrano le stesse identiche librerie necessarie, e fin qui ok.
- Nel secondo caso ld mostra le librerie che vede anche readelf, ma a queste ne aggiunge altre !
Dove le va a pescare queste librerie aggiuntive ? Chi le richiede ?

Re: ld-linux vs readelf

Inviato: mer 16 apr 2008, 13:16
da absinthe
mmm... potresti postare un esempio? l'iunica cosa che so è che readelf è crossplatform ed interroga direttamente l'eseguibile, ld invece si basa sul linker quandi anche su ld.so.conf

M

Re: ld-linux vs readelf

Inviato: mer 16 apr 2008, 14:16
da Dani
Su mplayer,

readelf:

Codice: Seleziona tutto

bt ~ # readelf -d /usr/bin/mplayer | grep 'Shared' | awk '{print $5}' | sed s/\\[// | sed s/\\]//
libgtk-x11-2.0.so.0
libgdk-x11-2.0.so.0
libatk-1.0.so.0
libgdk_pixbuf-2.0.so.0
libm.so.6
libpangocairo-1.0.so.0
libpango-1.0.so.0
libcairo.so.2
libgobject-2.0.so.0
libgmodule-2.0.so.0
libdl.so.2
libglib-2.0.so.0
libmad.so.0
libtheora.so.0
libogg.so.0
libpng.so.3
libz.so.1
libjpeg.so.62
libasound.so.2
libpthread.so.0
libmp3lame.so.0
libncurses.so.5
libcdda_interface.so.0
libcdda_paranoia.so.0
libungif.so.4
libsmbclient.so.0
libfribidi.so.0
libfontconfig.so.1
libfreetype.so.6
libGL.so.1
libXv.so.1
libXxf86vm.so.1
libXinerama.so.1
libXext.so.6
libX11.so.6
libartsc.so.0
libgthread-2.0.so.0
librt.so.1
libc.so.6
bt ~ #      
ldd:

Codice: Seleziona tutto

bt ~ # /lib/ld-linux.so.2 --list /usr/bin/mplayer | awk '{print $1}'
linux-gate.so.1
libgtk-x11-2.0.so.0
libgdk-x11-2.0.so.0
libatk-1.0.so.0
libgdk_pixbuf-2.0.so.0
libm.so.6
libpangocairo-1.0.so.0
libpango-1.0.so.0
libcairo.so.2
libgobject-2.0.so.0
libgmodule-2.0.so.0
libdl.so.2
libglib-2.0.so.0
libmad.so.0
libtheora.so.0
libogg.so.0
libpng.so.3
libz.so.1
libjpeg.so.62
libasound.so.2
libpthread.so.0
libmp3lame.so.0
libncurses.so.5
libcdda_interface.so.0
libcdda_paranoia.so.0
libungif.so.4
libsmbclient.so.0
libfribidi.so.0
libfontconfig.so.1
libfreetype.so.6
libGL.so.1
libXv.so.1
libXxf86vm.so.1
libXinerama.so.1
libXext.so.6
libX11.so.6
libartsc.so.0
libgthread-2.0.so.0
librt.so.1
libc.so.6
libXfixes.so.3
libXrender.so.1
libXi.so.6
libXrandr.so.2
libXcursor.so.1
/lib/ld-linux.so.2
libpangoft2-1.0.so.0
libpng12.so.0
libcrypt.so.1
libresolv.so.2
libnsl.so.1
libldap-2.3.so.0
liblber-2.3.so.0
libexpat.so.1
libgcc_s.so.1
libXau.so.6
libxcb-xlib.so.0
libxcb.so.1
libsasl2.so.2
libssl.so.0
libcrypto.so.0
libXdmcp.so.6
bt ~ #        
Fino a libc.so sono entrambi "sincronizzati", dopo ldd trova altre librerie necessarie mentre readelf non le mostra affatto #-o