GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum sind gemeinsam genutzte Bibliotheken unter Linux ausführbar?

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.


Linux
  1. Linux – Warum funktioniert Setuid nicht?

  2. Linux 3D-Grafikbibliotheken?

  3. Einführung in gemeinsam genutzte Linux-Bibliotheken (So erstellen Sie gemeinsam genutzte Bibliotheken)

  4. Warum sind Makefiles in Linux so nützlich?

  5. Warum den Linux-Kernel vor dem Root-Benutzer schützen?

So beheben Sie den Fehler „pacman:Fehler beim Laden gemeinsam genutzter Bibliotheken“ in Arch Linux

So listen Sie gemeinsam genutzte Bibliotheken auf, die von ausführbaren Dateien in Linux verwendet werden

Linux – Warum sind wahr und falsch so groß?

Strippen von gemeinsam genutzten Linux-Bibliotheken

Was sind die Nachteile der Nachrichtenwarteschlangen von Linux?

Warum sind die meisten Linux-Programme in C geschrieben?