Respuestas:
Correcto, pero hay algo a tener en cuenta.
Desde la página del ldd
manual:
ldd no funciona en a.out bibliotecas compartidas.
ldd no funciona con algunos programas a.out extremadamente antiguos que se crearon antes de que se agregara soporte ldd a las versiones del compilador. Si usa ldd en uno de estos programas, el programa intentará ejecutarse con argc = 0 y los resultados serán impredecibles.
ldd
aún imprime las dependencias de 32 bits.
@Calmarius es correcto, esto sucede si considera un exe de 32 bits, incluso sin bibliotecas básicas de 32 bits.
Estoy intentando actualizar mi sistema (una nueva instalación de Ubuntu 16.04, desde 12.04), tengo que instalar un antiguo servicio de 32 bits propiciatorio avserver
, que requiere ia32-libs
(ya no está disponible). Esto significa que ambos dpkg
y apt-get
están descontentos (lo que haga, que me incita a apt-get -f install
, y si funciono eso, insiste puedo desinstalar el paquete de servicios), y mi servicio no se iniciará.
Para demostrar que esto se debe a la falta de bibliotecas de 32 bits, he montado mi antiguo sistema (Ubuntu 12.04, con ia32-libs
y bibliotecas de 32 bits) /sda2
. Asegurándome /opt
(que contiene mi binario de 32 bits) está montado /sda2/opt
, puedo chroot /sda2
y ldd
luego se ejecuta según lo previsto.
Para solucionar esto, podría haber instalado manualmente todos los paquetes de la biblioteca dependiente con: i386 (arch). Sin embargo, decidí en lugar de tratar de averiguar cuáles eran mis dependencias, instalé wine (que es principalmente de 32 bits, por lo que instala las bibliotecas básicas y una carga más que realmente no necesito, pero estoy de acuerdo con eso).
Para arreglar dpkg
y apt-get
, edité /var/lib/dpkg/status
, encontrar el paquete para mi servicio, y lo eliminé ia32-libs
. Ahora dpkg
y apt-get
son felices
Hecho esto, ldd
felizmente informa:
root@withnail:/opt/<service path># ldd avserver
linux-gate.so.1 => (0xf77a6000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf778f000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7772000)
libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1 (0xf776b000)
libresolv.so.2 => /lib/i386-linux-gnu/libresolv.so.2 (0xf7752000)
libcrypt.so.1 => /lib/i386-linux-gnu/libcrypt.so.1 (0xf7720000)
libktssl.so.1.0.0 => /opt/<service path>/libktssl.so.1.0.0 (0xf76cb000)
libktcrypto.so.1.0.0 => /opt/<service path>/libktcrypto.so.1.0.0 (0xf756b000)
libktz.so.1 => /opt/<service path>/libktz.so.1 (0xf7558000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf754f000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf73d8000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7383000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7366000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf71af000)
/lib/ld-linux.so.2 (0x565b1000)