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

So beheben Sie den Fehler „Datei mit gemeinsam genutzten Objekten kann nicht geöffnet werden“ in Ubuntu-basierten Linux-Distributionen

Es gibt eine Liste häufiger Fehler, die ich oft in Ubuntu sehe. Es gibt ein Problem mit merge list, dann gibt es einen BADSIG Fehler, und eine Reihe häufiger Ubuntu-Aktualisierungsfehler.

Einer dieser häufigen Fehler, den ich oft sehe, wenn ich ein Programm aus seinem Quellcode installiere, ist Fehler beim Laden gemeinsam genutzter Bibliotheken . Der vollständige Fehler sieht im Allgemeinen so aus:

Fehler beim Laden gemeinsam genutzter Bibliotheken:
Datei mit gemeinsam genutzten Objekten kann nicht geöffnet werden:Datei oder Verzeichnis nicht vorhanden

Ich habe zum Beispiel versucht, den FreeRADIUS-Server zu verwenden, und es wurde mir dieser Fehler angezeigt:

radiusd: error while loading shared libraries:
libfreeradius-radius-2.1.10.so:
cannot open shared object file: No such file or directory

Der Grund für diesen Fehler ist, dass die Bibliotheken des Programms an einem Ort installiert wurden, an dem der dynamische Linker sie nicht finden kann.

Lassen Sie mich Ihnen zeigen, wie Sie dieses Problem beheben können.

Korrektur Fehlermeldung „Datei mit gemeinsam genutzten Objekten kann nicht geöffnet werden:Datei oder Verzeichnis nicht vorhanden“

Eine schnelle Möglichkeit, diesen „Fehler beim Laden gemeinsam genutzter Bibliotheken“ automatisch zu beheben, ist die Verwendung von ldconfig.

Sie müssen lediglich das Terminal öffnen (Strg+Alt+T) und den folgenden Befehl eingeben:

sudo /sbin/ldconfig -v

Dieser eine Liner sollte das Problem in den meisten Fällen lösen. Wenn dies jedoch nicht der Fall ist, habe ich eine andere Methode zur Behandlung dieses Fehlers besprochen. Aber vorher möchte ich Ihnen sagen, was der obige Befehl bewirkt.

Was sind Shared-Object-Dateien? Wie behebt der obige Befehl das Problem?

Sie sehen, in C/C++ ist ein .so (Shared Object) eine kompilierte Bibliotheksdatei. Es wird gemeinsam genutztes Objekt genannt, weil diese Bibliotheksdatei von mehreren Programmen gemeinsam genutzt werden kann. Diese generierten Bibliotheken befinden sich normalerweise in den Verzeichnissen /lib oder /usr/lib.

Wenn Sie sich nun fragen, wie dieser winzige Befehl dieses Problem behoben hat, sollten Sie die Manpage von lesen ldconfig was sagt:

ldconfig erstellt die notwendigen Links und den Cache zu den neuesten gemeinsam genutzten Bibliotheken, die in den Verzeichnissen gefunden werden, die auf der Befehlszeile in der Datei /etc/ld.so.conf angegeben sind , und in den vertrauenswürdigen Verzeichnissen (/lib und /usr/lib ). Der Cache wird vom Laufzeitlinker ld.so verwendet oder ld-linux.so . ldconfig überprüft den Header und die Dateinamen der Bibliotheken, auf die es stößt, wenn es feststellt, für welche Versionen die Links aktualisiert werden sollen.

Ich hoffe, diese schnelle Lösung hilft Ihnen dabei, den lästigen Fehler beim Laden der Meldung zu gemeinsam genutzten Bibliotheken zu beseitigen in Ubuntu und anderen Linux.

Wenn nicht, können Sie nachforschen und versuchen, das Problem so zu beheben, wie es im nächsten Abschnitt beschrieben wird.

Alternative Methode zur Behebung des Fehlers „Datei mit gemeinsam genutzten Objekten kann nicht geöffnet werden“

Die oben beschriebene Methode behebt das Problem, wenn die betreffende Bibliothek in Ihrem System verfügbar ist. Aber das muss nicht immer der Fall sein.

Wenn Sie das Programm nicht auf Ihrem System installiert haben, haben Sie keine Bibliotheksdatei. Die ldconfig kann nichts tun, wenn es überhaupt keine Bibliotheksdatei gibt.

Die alternative Methode besteht also darin, das erforderliche Programm zu installieren, und es sollte die Bibliothek automatisch erstellen.

Lassen Sie es mich Ihnen an einem Beispiel zeigen. Angenommen, Sie sehen diesen Fehler:

error while loading shared libraries: libgobject-2.0.so.0: cannot open shared object file: No such file or directory

Das Problem liegt bei libgobject Version 2.0. Die Versionsnummer ist wichtig, da einige Programme von einer bestimmten Version der Bibliothek abhängen und sich darüber beschweren, wenn sie sie nicht finden.

Jetzt bietet apt die Suchoption, die zum Suchen eines Pakets und zum Ermitteln seiner Version vor der Installation verwendet werden kann.

[email protected]:~$ apt search libgobject
Sorting... Done
Full Text Search... Done
librust-gobject-sys-dev/focal 0.9.0-2 amd64
  FFI bindings to libgobject-2.0 - Rust source code

Nun, dieses librust-gobject-sys-dev-Paket könnte das sein, was Sie brauchen, wenn Sie wissen, dass Sie versucht haben, ein Rust-Programm auszuführen. Aber was wäre, wenn es ein Python-Programm wäre, das Sie ausgeführt haben und das sich darüber beschwert hat?

Sie können Ihre Suche erweitern, indem Sie während der Suche die Bibliothek aus dem Paketnamen entfernen. Die lib bedeutet Bibliothek und Bibliotheken können von einem generischen Paket bereitgestellt werden, das gobject-xyz heißen könnte.

Es wäre eine gute Idee, nach der Zeichenfolge im Namen des Pakets (anstelle der Beschreibung) zu suchen, um präzisere Ergebnisse zu erhalten.

[email protected]:~$ apt search --names-only gobject
Sorting... Done
Full Text Search... Done
gobject-introspection/focal-updates 1.64.1-1~ubuntu20.04.1 amd64
  Generate interface introspection data for GObject libraries

libavahi-gobject-dev/focal 0.7-4ubuntu7 amd64
  Development headers for the Avahi GObject library

libavahi-gobject0/focal 0.7-4ubuntu7 amd64
  Avahi GObject library

libcairo-gobject-perl/focal,now 1.005-2 amd64 [installed,automatic]
  integrate Cairo into the Glib type system in Perl

libcairo-gobject2/focal,now 1.16.0-4ubuntu1 amd64 [installed,automatic]
  Cairo 2D vector graphics library (GObject library)

libghc-gi-gobject-dev/focal 2.0.19-1build1 amd64
  GObject bindings

libghc-gi-gobject-doc/focal,focal 2.0.19-1build1 all
  GObject bindings; documentation

In der obigen abgeschnittenen Ausgabe müssen Sie sehen, ob das Paket mit dem ursprünglichen Programm zusammenhängt, das Sie ausführen wollten. Sie müssen auch die Version der bereitgestellten Bibliothek überprüfen.

Sobald Sie das richtige Paket identifiziert haben, installieren Sie es wie folgt:

sudo apt install package_name

Nach der Installation können Sie den Befehl ldconfig erneut ausführen, um den Cache zu aktualisieren:

sudo /sbin/ldconfig -v

Diese Methode erfordert etwas Aufwand auf Ihrer Seite, aber so werden die Abhängigkeiten gehandhabt.

Nichts funktioniert, was nun?

Wenn Sie unglücklich genug sind, funktionieren die oben genannten Methoden möglicherweise nicht für Sie. Was können Sie tun?

Denken Sie zunächst daran, dass die gemeinsam genutzten Bibliotheken in einigen Fällen von anderen Paketen verwendet werden können. Wenn Sie versucht haben, das XYZ-Programm auszuführen und das ABC-Programm die richtige Version der gemeinsam genutzten Bibliothek installiert, funktioniert es möglicherweise (oder auch nicht) für Sie. Sie können es versuchen.

Zweitens, wenn Sie versuchen, ein Programm auszuführen, das zu alt oder zu neu ist, ist möglicherweise eine Bibliotheksversion erforderlich, die für Ihre Linux-Distribution nicht verfügbar ist.

Was Sie tun können, ist zu prüfen, ob Sie eine andere Version des Programms verwenden können. Verwenden Sie beispielsweise Eclipse Version 3 anstelle von Version 4. Dies kann in Ihrem Fall hilfreich sein.

Die andere Möglichkeit wäre, die Entwickler-Website oder Foren zu überprüfen und zu sehen, ob Sie die richtige Version der Bibliothek manuell aus ihrem Quellcode installieren können. Das erfordert viel Aufwand (im Jahr 2020), aber Sie haben nicht viele Möglichkeiten.

Hat es bei dir funktioniert?

Ich hoffe, ich habe die Dinge für Sie etwas klarer gemacht. Konnten Sie das Problem der gemeinsam genutzten Bibliotheken in Ihrem System beheben? Wenn Sie Fragen oder Anregungen haben, können Sie gerne einen Kommentar hinterlassen. Ciao :)



Ubuntu
  1. Ubuntu – Wie öffnet man eine .bak-Datei unter Linux?

  2. So konfigurieren Sie xdebug-Fehlermeldungen, um eine Datei im Kate-Editor unter Ubuntu zu öffnen

  3. Rpm:Fehler beim Laden von Shared Libraries:Libz.so.1:Shared Object File kann nicht geöffnet werden:Keine solche Datei

  4. „Fehler beim Laden gemeinsam genutzter Bibliotheken:libjli.so:Datei mit gemeinsam genutzten Objekten kann nicht geöffnet werden:Keine solche Datei oder kein solches Verzeichnis“ Fehler „java -version“ beim Start

  5. Linux-Fehler beim Laden gemeinsam genutzter Bibliotheken:Gemeinsam genutzte Objektdatei kann nicht geöffnet werden:Keine solche Datei oder dieses Verzeichnis

So verwenden Sie einen Dateibefehl unter Linux

So öffnen Sie eine Datei unter Linux

So ändern Sie das Limit für offene Dateien in Linux

Lösung:Fehler:Keine solche Partitions-Grub-Rettung in Ubuntu Linux

So installieren Sie das neueste Kodi auf Ubuntu-basierten Linux-Distributionen

So beheben Sie den Fehler „Repository ist noch nicht gültig“ in Ubuntu Linux