Wie verwalten Sie gemeinsam genutzte Bibliotheken unter Linux?

8

Zum Beispiel muss ich eine gemeinsame Bibliothek, libXXX.so, generieren.

  1. Was ist der übliche Weg, um es zu generieren? Verwenden Sie nur -fPIC -shared?

  2. Muss ich eine weiche Verknüpfung zu dieser Bibliothek erstellen? Ich meine mit ln -s.

  3. Was passiert, wenn ich die freigegebene Bibliothek aktualisiere, z. von libXXX.so.1.2.3 zu libXXX.so.1.2.4, wie weiß mein Projekt, dass die gemeinsame Bibliothek aktualisiert wird? Muss ich das gesamte Projekt erneut kompilieren?

  4. Wie wird die gemeinsame Bibliothek in Makefile verwaltet?

Ich verstehe diese Probleme absolut nicht. Bitte tu mir einen Gefallen: -)

    
injoy 30.05.2012, 08:24
quelle

1 Antwort

2

Das Thema, zu dem Sie die Frage gestellt haben, ist enorm. Die meisten Ihrer Fragen hängen von Ihrer Umgebung ab und ob ein Softlink erstellt wird oder nicht, hängt davon ab, in welchem ​​Ordner Sie Ihre Bibliothek behalten und welche Prozesse möglicherweise darauf zugreifen müssen usw.

Bitte überprüfen Sie den Link & amp; Dieser Link enthält auch eine detaillierte Erklärung zum Erstellen und Verwenden von Shared Libraries.

Einige kurze Antworten auf Ihre Fragen:

  

Was ist der übliche Weg, um es zu generieren? Verwenden Sie nur -fPIC -shared?

Die verwendeten Optionen hängen vom Compiler ab. fPIC hilft bei der Erzeugung von positionsunabhängigem Code und Shared macht die Bibliothek zu einer gemeinsamen Bibliothek. Aber abgesehen davon gibt es auch Optionen, die nur die Symbole anzeigen können, die Sie aus Ihrer Bibliothek exportieren möchten, und Optionen, die eine starke Verbindung zwischen den globalen Symbolen Ihrer Bibliothek (-symbolisch) usw. herstellen.

  

Muss ich eine weiche Verknüpfung zu dieser Bibliothek erstellen? Ich meine mit ln -s.

Wie ich oben erwähnt habe, hängt das davon ab, wo Sie Ihre Bibliothek platzieren. Der übliche Mechanismus besteht darin, Ihre Bibliothek in einem Ordner Ihrer Wahl zu belassen und einen Link zu ihr in einem allgemein bekannten oder zugänglichen Ordner wie / usr / lib etc zu erstellen.

  

Was passiert, wenn ich die Shared Library aktualisiere? von libXXX.so.1.2.3 nach   libXXX.so.1.2.4, wie mein Projekt weiß, dass die gemeinsame Bibliothek ist   aktualisiert? Muss ich das gesamte Projekt erneut kompilieren?

Einer der Hauptvorteile von shared library besteht darin, dass Sie die neuesten Versionen aktualisieren können, ohne den gesamten Code neu kompilieren zu müssen. Dies wiederum hängt von der Plattform & amp; Compiler.

  

Was ist der übliche Weg, um die gemeinsam genutzte Bibliothek in Makefile zu verwalten?

Es gibt zig Links in Google und mein Link bietet auch einige grundlegende Details.

    
Jay 30.05.2012, 08:35
quelle