Erstellen einer gemeinsam genutzten Bibliothek aus vorhandenen Objektdateien

8

Ich habe ein Projekt in meiner IDE. Ich muss eine gemeinsame Bibliothek davon erstellen, um sie in Erweiterungen zu verwenden. Ich möchte keine Kopie dieses Projekts mit Shared-Library-Einstellungen erstellen. Gibt es eine Möglichkeit, eine gemeinsam genutzte Bibliothek mithilfe der Objektdateien (.o) aus meinem bereits vorhandenen Projekt zu erstellen? Soweit ich weiß, kann ich dafür ein Makefile schreiben.

    
Ockonal 06.04.2010, 09:25
quelle

2 Antworten

13

Ich nehme an, Sie sind auf einer Art Unix und verwenden wahrscheinlich die GNU-Toolchain. Um in diesem Fall eine geeignete gemeinsam genutzte Bibliothek zu erstellen, müssen Sie Ihren Code mithilfe der positionsunabhängigen Code-Flags (-fpic oder -fPIC) kompilieren, bevor Sie eine gemeinsam genutzte Bibliothek erstellen können. Wenn Ihre .o-Dateien nicht bereits mit diesen Flags kompiliert sind, besteht die Möglichkeit, dass Sie nicht mit einer funktionierenden, gemeinsam genutzten Bibliothek arbeiten.

Wenn sie bereits für positionsunabhängigen Code kompiliert wurden, sollte das übliche g++ -shared ... den Trick machen.

    
Timo Geusch 06.04.2010, 09:37
quelle
7

g++ -shared -fPIC -o myshared.so *.o

    
pajton 06.04.2010 09:36
quelle

Tags und Links