2010-08-26 20 views
2

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?

+0

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. –

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.