dlopen schlägt mit Datei nicht gefunden, wenn die Datei in richtigen Pfad ist

StackOverflow https://stackoverflow.com/questions/3937369

  •  30-09-2019
  •  | 
  •  

Frage

Ich habe eine Bibliothek mit libtool gebaut, die in das Bibliotheksverzeichnis, /usr/local/lib/myprog/libmylib.so Paket ist installieren. Ich bin Laden dynamisch die Bibliothek in meinem Code mit libltdl. Wenn ich versuche, diese Bibliothek auf einer Maschine zu laden, es funktioniert gut. Auf einem anderen, mit dem gleichen Aufbau und der Bibliothek an der gleichen Stelle installiert, erhalte ich eine „Datei nicht gefunden“ Fehler.

Wenn es lt_dlforeachfile direkt vor lt_dlopenext nennen (was ich verwende, um die Bibliothek zu laden), dann kann ich durch Ausdrucke Dateinamen sehen, dass die Bibliothek ich Bedürfnis im Suchpfad gefunden. Aber dann unmittelbar nach dem Laden nicht mit einer „Datei nicht gefunden“ Fehler. Irgendwelche Vorschläge?

UPDATE

Ich habe versucht, die Umstellung auf dlopen Verwendung und ausdrücklich den absoluten Pfad zu der Bibliothek angibt. Das funktioniert immer noch auf einigen Systemen und nicht auf der anderen Seite.

War es hilfreich?

Lösung

Es stellte sich heraus, dass libltdl den wirklichen Fehler versteckt hielt. die „Datei nicht gefunden“ wurde aus einer anderen Bibliothek, dass die Bibliothek ich Laden war hing davon ab. Ich entdeckte dies, wenn dlerror() mit den Fehlermeldungen zu drucken. Nachdem die fehlende Bibliothek installieren, ist alles gut!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top