J'ai un programme c qui repose sur une deuxième bibliothèque dont je peux contrôler la compilation. Je veux être capable de compiler mon programme dans une bibliothèque d'objets partagés sans qu'il soit lié à la seconde bibliothèque. En d'autres termes, je veux une seule bibliothèque d'objets partagés monolithique à la fin. Comment puis-je faire ceci? Si je compile séparément la deuxième bibliothèque dans un .so et l'inclue comme dépendance lors de la compilation de mon programme, je peux voir que j'ai besoin de ce fichier quand je lance ldd sur le binaire.intégrer .so dans un autre .so sans dépendance?
2
A
Répondre
3
Vous devez compiler votre deuxième bibliothèque en tant que .a (bibliothèque statique) et la lier statiquement dans votre programme c.
liaison statique est lorsque les fichiers d'objets sont liés au moment de la compilation et font partie du binaire final, l'exécutable résultant peut être exécutée sans dépendances ..
bibliothèques partagées (.so) sont liés à l'exécution et doit être disponible lorsque vous exécutez le binaire qui les relie.
l'indicateur gcc à lier de manière statique est: -static
cela recherchera automatiquement les fichiers .a.
0
Ce que radman a dit ci-dessus.
http://www.network-theory.co.uk/docs/gccintro/gccintro_25.html
Questions connexes
- 1. Comment mon .so peut-il trouver son .so dépendant dans différentes versions d'Ubuntu?
- 2. Conversion de .DLL en .SO
- 3. Fusionner plusieurs bibliothèques partagées .so
- 4. ffmpeg imlib2.so watermarking trouble
- 5. Lier une application à libbz2.so.1 plutôt que libbz2.so.1.0
- 6. Charger une bibliothèque .so dans ctypes
- 7. Conversion d'un fichier .so en fichier .jnilib
- 8. Comment lister les symboles dans un fichier .so
- 9. Liaison avec un fichier .so différent dans Linux
- 10. Définition d'un symbole dans un fichier .so sur Solaris
- 11. SO: qu'est-ce que ça veut dire? J'étudie le code source SO
- 12. Comment codez-vous ceci: Le menu SO
- 13. Comment obtenir le fichier _sqlite3.so?
- 14. Dossier standard pour les fichiers .so
- 15. comment utiliser QtSingleApplication bt le fichier so?
- 16. comment SO a animé répondre div
- 17. Un essai de débutant pour un Q sur SO
- 18. qmake: Comment copier .dll/.so dans le répertoire de sortie?
- 19. pop up message comme fenêtre SO Drapeau
- 20. Demander SO: Bon code PHP à lire?
- 21. DDD: étiquette SO. Une entité ou un type de valeur?
- 22. Y at-il un moyen de décompiler Linux .so?
- 23. Java - obtenir un texte de So-tête JTable
- 24. Pour analyser la consommation CPU des addons Firefox dans SO
- 25. comment lier avec lib dynamique (. So) et static libc.a
- 26. Ceci est le chemin css de SO http://sstatic.net/so/all.css?v=6184 "Qu'est-ce que c'est? V = 6184"?
- 27. libtool ajout de 'U' supplémentaires aux noms de fichiers .so
- 28. Pyinstaller ld-linux-x86-64.so.2 problème de liaison
- 29. Symboles non définis GCC/C++ chargeables dynamiquement Objets * .so
- 30. Exceptions sous Linux à partir d'un objet partagé (.so)
Votre «programme» est également une bibliothèque? Je demande parce que vous avez dit que vous voulez compiler votre programme dans une bibliothèque d'objets partagés. –