Bibliothekspräferenz beim Verknüpfen angeben
In einem Szenario, in dem beim Verknüpfen eine bestimmte gemeinsam genutzte Bibliothek verwendet werden muss, aber eine Systembibliothek mit Wenn derselbe Name vorhanden ist, ist es hilfreich, die Präferenz zu steuern und sicherzustellen, dass die beabsichtigte Bibliothek Vorrang hat. So erreichen Sie dies.
LD_LIBRARY_PATH
Eine Lösung besteht darin, die Umgebungsvariable LD_LIBRARY_PATH zu ändern, die die Verzeichnisse auflistet, nach denen der Linker sucht gemeinsam genutzte Bibliotheken. Durch Hinzufügen des Pfads zur beabsichtigten Bibliothek am Anfang oder Ende von LD_LIBRARY_PATH gibt der Linker ihm Vorrang vor der Systembibliothek. Allerdings ist Vorsicht geboten, da Fehlkonfigurationen zu Sicherheitsrisiken oder Leistungsproblemen führen können.
-Wl,-rpath
Alternativ kann der -Wl,-rpath Compiler-Option kann verwendet werden, um den Suchpfad der Laufzeitbibliothek anzugeben. Durch Hinzufügen von -Wl,-rpath,$(DEFAULT_LIB_INSTALL_PATH) durchsucht der Linker das angegebene Verzeichnis nach Bibliotheken, bevor er in Standardverzeichnissen sucht. Diese Option ist eine vorübergehende Lösung, die den Standardsuchpfad für die spezifische Anwendung überschreibt.
Temporäre Pfadänderung
Mit LD_LIBRARY_PATHim laufenden Betrieb während der Befehlsausführung. Durch Festlegen von LD_LIBRARY_PATH=/some/custom/dir vor dem Ausführen des Programms durchsucht der Linker vorübergehend das angegebene Verzeichnis nach Bibliotheken.
Überprüfen der BibliotheksauflösungUm zu überprüfen, welche Bibliotheken verknüpft werden, verwenden Sie
ldconfig -p | grep libpthread, um bekannte Bibliotheken aufzulisten. Um zu überprüfen, welche Bibliotheken von einer Anwendung verwendet werden, führen Sie ldd foo aus, um aufgelöste Abhängigkeiten anzuzeigen.
Das obige ist der detaillierte Inhalt vonWie priorisiert man die Bibliothekspräferenz beim Verknüpfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!