Tatsächlich hängt es vom ldd
ab Implementierung. ldd
normalerweise ein Skript ist, können Sie es bearbeiten, um zu sehen, wo und warum dieser Fehler auftritt.
Unter Ubuntu 10.04, ldd
sucht nach read
nur Erlaubnis. Es kann den Fehler keine dynamische ausführbare Datei geben wenn die Datei kein ELF ist (Executable and Linkable Format ). Die Bibliotheken hier sind alle -rw-r--r--
, zum Beispiel
$ 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
Es ist nicht verwunderlich, eine x
zu wollen Zugriff auf eine gemeinsam genutzte Bibliothek. Die executable
Modus ist eine Konvention, die dem Betriebssystem eine weitere Ebene der Zugriffsrechtekontrolle verleiht. Der ausführbare Lader steuert diesen Zugriff, um sicherzustellen, dass der Benutzer ihn ausführen kann, aber auch um Fehler zu vermeiden (einige Skripte oder Programme sollten von einigen Personen nicht ausgeführt werden).
Dies könnte aus dem gleichen Grund auf die gemeinsam genutzten Bibliotheken ausgeweitet werden - aber gemeinsam genutzte Bibliotheken können nicht laufen von selbst und sind weniger fehleranfällig, versehentlich verwendet zu werden ). Daher ist die Notwendigkeit weniger offensichtlich (die r
Zugriff genügt).
Sie können tatsächlich viele Bibliotheken ausführen, sehen Sie zum Beispiel, was passiert, wenn Sie /lib/libc.so.6
eingeben in Ihrer Shell auf einem neueren GNU/Linux-System.