Ich habe einen Fall, in dem es zwei Bibliotheken lib1 und lib2 gibt. lib2 hat Abhängigkeiten zu lib1. In meinem Fall ist lib2 im Grunde genommen ein Wrapper auf hoher Ebene um die Funktionen in lib1 herum. Die letzte Anwendung wird nur Funktionen von lib2 verwenden, indem Sie den entsprechenden Header hinzufügen. Wie baue ich die Bibliotheken statisch und verknüpfe sie mit dem endgültigen Programm?statische Bibliothek aufbauen, die von einer anderen statischen Bibliothek abhängt
0
A
Antwort
5
Statische Bibliotheken sind nur Archive von Objektdateien (.o
), sodass Sie keine eingebetteten Abhängigkeitsinformationen haben können. Etwas wie ar cr lib1.a foo.o bar.o [more object files]
wird Ihre Bibliotheken erstellen.
Da es keine Abhängigkeitsinformation ist, Ihr Hauptprogramm hat beide die Bibliotheken zu verknüpfen und es ist wichtig lib1
nachlib2
zu verknüpfen, wenn lib2
auf lib1
abhängt (sonst der Linker nicht die Symbole finden, die ungelöst sind in lib2
). Ein Verknüpfungsschritt könnte daher wie folgt aussehen (Sie gcc
und Ihre Bibliotheken sind im aktuellen Verzeichnis vorausgesetzt):
gcc -otest main.o -L. -Wl,-Bstatic -l2 -l1
Verwandte Themen
- 1. Pod erstellen, das von einer statischen Bibliothek abhängt
- 2. Wie kompiliere ich mit einer statischen Bibliothek, die auf einer anderen statischen Bibliothek basiert
- 3. Inhalt einer statischen Bibliothek
- 4. Android NDK: Aufbau statische Bibliothek mit anderen statischen Bibliotheken
- 5. Kann ich eine JAR erstellen, die von einer anderen Bibliothek abhängt, ohne diese Bibliothek aufzurufen?
- 6. Wie wird die statische importierte Bibliothek von einer anderen statisch importierten Bibliothek in CMake abhängig gemacht?
- 7. Integrierte Bibliothek beim Erstellen einer statischen Bibliothek mit Eclipse
- 8. LD: eine gemeinsame Bibliothek zu einer statischen Bibliothek verknüpfen
- 9. Verwenden einer statischen Bibliothek in Qt Creator
- 10. Hinzufügen einer statischen Bibliothek zu podspec
- 11. Komponententest mit einer statischen Bibliothek
- 12. Erstellen einer statischen Bibliothek mit Cocoapods
- 13. Redefinieren Funktionsname in einer statischen Bibliothek
- 14. Erstellen einer statischen Bibliothek aus iOS Anwendungsprojekt
- 15. Überprüfen iOS Bereitstellungsziel einer statischen Bibliothek
- 16. Wie eine Bibliothek aus einer anderen Bibliothek in QT
- 17. ftd2xx statische Bibliothek Verbindungsfehler
- 18. Erstellen Sie eine statische Bibliothek mit einer anderen STATIC-Bibliothek, die Inhalt in iOS mit CMake
- 19. Teilen Sie einen Teil einer statischen Bibliothek
- 20. Verpacken eines Bundles mit einer statischen Bibliothek
- 21. Statische Bibliothek mit Abhängigkeiten
- 22. Erstellen einer statischen Bibliothek in C
- 23. Funktionsnamen Extraktion aus statischen Bibliothek
- 24. Fügen Sie statische Bibliothek innerhalb einer Präprozessordirektive
- 25. Korrekte Verknüpfung einer statischen Bibliothek mit der C Math Bibliothek
- 26. Statische Verknüpfung einer Bibliothek unter Linux
- 27. C++ Linke statische Bibliothek gegen gemeinsame Bibliothek
- 28. C99: Dynamischer Versand in einer statischen Bibliothek
- 29. Verhindern von Template-Instanziierungen in einer statischen Bibliothek
- 30. Android Studio: AAR Bibliothek Abhängigkeit innerhalb einer anderen AAR-Bibliothek
+1 ich das gleiche dachte aber aufgrund weniger Erfahrung in C ich nicht beantwortet haben. (Y) –
@rici der Linker ist nicht im Anwendungsbereich des Standards. Hier geht es um den GNU-Linker. Sie können bei Bedarf die gleiche Bibliothek * zweimal * in einem Aufruf auflisten. –
Für Bibliotheken ist es möglich, sie zweimal in der Befehlszeile zu platzieren: '-l1 -l2 -l1' behandelt Referenzen in beide Richtungen, einschließlich der gegenseitigen Rekursion. – rici