Angenommen, ich habe eine Datei main.cpp
, die sin()
Funktion verwendet, die in libmath
definiert ist. Nehmen Sie außerdem an, dass sowohl libmath.a als auch libmath.so im selben Verzeichnis verfügbar sind. Jetzt, wenn ich den Befehl g++ -o main main.cpp -lmath
ausstelle, ist das Standardverhalten von Linux, zur geleiteten Bibliothek zu verbinden libmath.so
. Ich möchte wissen, gibt es eine Möglichkeit, das Programm zu zwingen, mit der statischen Bibliothek libmath.a
verknüpfen, ohne die gemeinsame Bibliothek zu löschen oder zu verschieben?Wie kann ich die Verknüpfung mit einer statischen Bibliothek erzwingen, wenn eine gemeinsame Bibliothek mit demselben Namen vorhanden ist
25
A
Antwort
20
Sie müssen die -static dem Linker übergeben, aber nur für bestimmte Bibliotheken, die Sie möchten. zB:
g++ -o main main.cpp -Wl,-Bstatic -lmath -Wl,-Bdynamic
+3
Ich denke, du meinst "-Bistatic" statt "-static". Schlechte Single-Character-Bearbeitungen sind nicht erlaubt ... –
+0
Sicher sollte es für gcc/binutils keine Rolle spielen, -static und -Bstatic sind Synonyme im GNU-Linker. – nos
4
Mit dieser Funktion:
g++ -o main main.cpp /path_to/libmath.a
8
Wenn Ihr Linker unterstützt -l:<filename>
Sie verwenden:
g++ -o main main.cpp -l:libmath.a
Verwandte Themen
- 1. eine gemeinsame Bibliothek mit Statik Verknüpfung CMake mit
- 2. Erstellen einer statischen Bibliothek mit Cocoapods
- 3. Komponententest mit einer statischen Bibliothek
- 4. Kann eine statische XCode-Bibliothek eine Verknüpfung mit einer dynamischen Bibliothek erfordern?
- 5. Verknüpfung mit mehreren gemeinsam genutzten Bibliotheken, die alle mit einer gemeinsamen statischen Bibliothek verknüpft sind
- 6. Verknüpfung der C-Bibliothek mit einem nicht standardmäßigen Namen
- 7. Verknüpfung mit statischen Bibliotheken
- 8. Wie Standard-Bibliothek statt mit demselben Namen Modul in Modulpfad
- 9. Inhalt einer statischen Bibliothek
- 10. Statische Verknüpfung der mit Xcode-Ziel verknüpften Bibliothek erzwingen?
- 11. Verpacken eines Bundles mit einer statischen Bibliothek
- 12. Kann ich eine Bibliothek und eine Binärdatei mit demselben Namen haben?
- 13. Verknüpfung mit einer Debug/Release-Bibliothek mit qmake/Qt Creator
- 14. Wie erstelle ich eine gemeinsame Bibliothek mit ld?
- 15. CMake: Wie erstelle ich eine einzelne gemeinsame Bibliothek aus allen statischen Bibliotheken von Teilprojekten?
- 16. extern Variable Verknüpfung Fehler innerhalb einer statischen Bibliothek
- 17. Kompilieren eine gemeinsame Bibliothek statisch
- 18. Wie kann ich eine ältere Version einer gemeinsamen Bibliothek verknüpfen
- 19. Wie bekomme ich die Versionsnummer von einer statischen Bibliothek?
- 20. Statische Verknüpfung einer Bibliothek unter Linux
- 21. Eine statische Bibliothek in eine gemeinsame Bibliothek einbinden
- 22. Segmentierungsfehler, gemeinsame Bibliothek
- 23. "undefiniert reference", wenn die Verknüpfung gegen eine statische Bibliothek
- 24. (iphone) imageNamed, wenn mehrere Dateien mit demselben Namen vorhanden sind?
- 25. g ++ Linker: erzwinge statische Verknüpfung, wenn eine statische Bibliothek existiert?
- 26. Erstellen einer statischen Bibliothek in C
- 27. Gemeinsame Bibliothek, Makefile. Bibliothekspfad
- 28. Wie erstellt man eine gemeinsame Bibliothek mit cmake?
- 29. Gemeinsame Bibliothek im Repository mit Visual Studio
- 30. Erstellen Sie eine statische Bibliothek mit einer anderen STATIC-Bibliothek, die Inhalt in iOS mit CMake
Mögliches Duplikat von [g ++ Linker: erzwingen statisch Linken, wenn statische Bibliothek vorhanden ist? ] (http://stackoverflow.com/questions/3698321/g-linker-force-static-linking-if-static-library-exists) –