Dis que j'ai A.So et B.So. Puis-je produire C.SO comme une bibliothèque partagée unique avec toutes les fonctions exportées par A et B, bien entendu résoudre toutes les dépendances intra-dépendances (c'est-à-dire toutes les fonctions de B.SO appelées par A.SO et l'inverse de l'inverse)?
J'ai essayé
gCC -Shared -WL -WL, SONAME, C.SO -O C.SO A.SO B.SO
mais ça ne marche pas.
Même va si j'archive a.o et b.o dans A.A et B.A (qui ne devrait pas modifier a.o et b.o), et faire
gCC -Shared -WL -WL, Soname, C.SO -O C.SO A.A B.A
Merci
La fusion de plusieurs bibliothèques partagées en une seule est vraiment pratiquement impossible à tous unixen, à l'exception de AIX: le linker considère le produit "final".
Mais fusionner des archives en .so ne devrait pas être un problème:
gcc -shared -o c.so -Wl,--whole-archive a.a b.a -Wl,--no-whole-archive
En pratique, ce n'est pas possible.
Du point de vue de la liaison, A SO Library est un produit final qui ne contient pas d'informations de relocalisation requises pour la liaison.
Si vous avez accès à des fichiers source ou d'objet pour les deux bibliothèques, il est simple de compiler/relier une combinaison SO d'entre eux.