3 votes

Ldd avec des binaires 32 bits sur un système 64 bits - s'exécute mais ne signale pas

Mes liens sont dans

/lib{32,64}/ld-2.20.so, avec des liens symboliques à

/lib32/ld-linux.so.2 et

/lib64/ld-linux-x86-64.so.2 (aux ld-2.20.sos appropriés)

Lorsque j'essaie d'exécuter un binaire 32 bits, tout se passe bien. Ils se compilent bien (j'utilise un fichier specs gcc légèrement modifié) et se lient apparemment bien, et s'exécutent bien.

Lorsque j'essaie ldd /chemin/vers/exemple/binaire/32bit, on me dit pas un exécutable dynamique. Je pense que cela est dû au fait de ne pas trouver de lien pour ouvrir l'exécutable.

readelf -l exemple_binaire | grep interpreter donne [Demande de l'interpréteur de programme: /lib32/ld-linux.so.2], comme prévu.

Des idées sur la raison de ce problème ou comment je peux le résoudre ?

P.S. - "Installer des bibliothèques de compatibilité 32 bits en utilisant sudo apt get ... " n'est pas utile, car je n'ai pas apt/pacman/etc. Si je dois réinstaller une bibliothèque spécifique (32 bits), alors savoir cela serait utile !

P.P.S. - Les fichiers de script installés par gcc à /usr/lib{32,64}/libc.so regroupent les fichiers libc.so.6 (réels) et libc_nonshared.a appropriés, avec le AS_NEEDED ( /lib32/ld-linux.so.2 ) ) à la fin pour lib32

2voto

Hameer Abbasi Points 153

Il s'avère que c'est plutôt facile.

/usr/bin/ldd est juste un fichier de script.

Ouvrir le fichier de script montre une ligne près du haut, qui lit initialement (sur mon système) :

RTLDLIST="/lib/ld-linux.so.2 /lib64/ld-linux-x86-64.so.2 /libx32/ld-linux-x32.so.2".

Changer cette ligne en RTLDLIST="/lib32/ld-linux.so.2 /lib64/..." a immédiatement résolu le problème.

P.s. (ajouté ici au cas où cela pourrait aider quelqu'un d'autre ayant du mal à installer gobject-introspection) La solution est également utile si vous essayez d'installer gobject-introspection, car cela appelle ldd pour résoudre des bibliothèques.

Le message d'erreur que j'ai obtenu était : ERROR: can't resolve libraries to shared libraries: gobject-2.0, glib-2.0

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X