En realidad depende del ldd
implementación. ldd
suele ser un script, puede editarlo para ver dónde y por qué obtiene ese error.
En Ubuntu 10.04, ldd
comprueba el read
permiso solamente. Puede dar el error no es un ejecutable dinámico si el archivo no es un ELF (formato ejecutable y enlazable ). Las librerías aquí son todas -rw-r--r--
, por ejemplo
$ find /usr/lib -type f -name "libm*.so*" -ls
(...)
-rw-r--r-- 1 root root 216800 Feb 26 22:20 /usr/lib/libmp.so.3.1.16
-rw-r--r-- 1 root root 76728 Mar 14 04:23 /usr/lib/libmjpegutils-1.9.so.0.0.0
-rw-r--r-- 1 root root 134464 Jan 29 2010 /usr/lib/libm17n-core.so.0.3.0
-rw-r--r-- 1 root root 290480 Feb 17 2010 /usr/lib/libmtp.so.8.3.2
No es sorprendente querer un x
acceso a una biblioteca compartida. El executable
El modo es una convención que le da al sistema operativo otro nivel de control de derechos de acceso. El cargador de ejecutables controla ese acceso, para garantizar que el usuario pueda ejecutarlo, pero también para evitar errores (algunos scripts o programas no deberían ser ejecutados por algunas personas).
Esto podría extenderse a las bibliotecas compartidas por la misma razón, pero las bibliotecas compartidas no pueden ejecutarse por sí mismos, y son menos propensos a errores para ser usados por accidente ). Por lo tanto, la necesidad es menos obvia (el r
el acceso es suficiente).
De hecho, puede ejecutar muchas bibliotecas, vea, por ejemplo, qué sucede cuando escribe /lib/libc.so.6
en su shell en un sistema GNU/Linux reciente.