Wie lade ich eine gemeinsam genutzte Bibliothek, ohne ihre Abhängigkeiten zu laden?

Angenommen, ich habe eine Bibliotheklibfoo.so.1, was davon abhängt (nachldd) auflibbar.so.1. Jedoch,libbar.so.1 ist momentan nicht verfügbar. Meine App muss eine Funktion aufrufenlibfoo.so.1 was nicht erfordertlibbar.so.1 überhaupt.

Gibt es eine Möglichkeit zum Ladenlibfoo.so.1, lösen Sie das Funktionssymbol und rufen Sie es dann auf, ohne es zu habenlibbar.so.1 die Abhängigkeit zu befriedigen? Es ist ein Fall von "Ich weiß, was ich tue, lass es mich schon tun". Ich habe versucht, das RTLD_LAZY-Flag zu laden, aber es versucht immer noch, das zu ladenlibbar.so.1 Bibliothek vornicht Laden der Symbole.

BEARBEITEN

Hier ist die genaue Situation.

Wir haben 3 Spieler:

libbar.so.1, eine gemeinsam genutzte Bibliothek, die sich in einem Pfad befindet, der nicht inLD_LIBRARY_PATH oderldconfigund deren Abhängigkeiten alle aufgelöst sindlibfoo.so.1, eine gemeinsam genutzte Bibliothek in einem anderen Verzeichnis alslibbar, aber was kommt darauf anlibbar. Zur Laufzeit,libfoo wird wissen, wo zu finden istlibbar.App, eine binäre Anwendung, die geladen werden musslibfoo irgendwann zur Laufzeit.

App weiß nicht wo zu findenlibbar, aber weiß daslibfoo weiß. Was ich versuche zu erreichen, ist eine Init-Funktion inlibfoo was sich einfach ändern würdeApp's aktuelles Arbeitsverzeichnis wohinlibbar befindet sich, um endlich alle Abhängigkeiten aufzulösen und alle glücklich zu machen.

libfoo werdenschließlich müssen Sachen anrufenlibbar, nur nicht in dieser Init-Funktion. Ich glaube nicht, dass das Erstellen eines Stubs funktionieren würde, da die Symbole irgendwann aufgelöst werden müsstenecht funktionen.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage