Puis-je mélanger statique et de bibliothèques d'objets lors de la liaison?
J'ai un projet C qui produit dix exécutables, tous de qui je voudrais être liés de manière statique. Le problème, je suis confronté est que l'un de ces exécutables utilise une 3ème partie de la bibliothèque dont seule la commune-version objet est disponible.
Si je passe les -static
drapeau à gcc, ld va d'erreur en disant qu'il ne peut pas trouver la bibliothèque en question (je présume qu'il est à la recherche de l' .une version) et que l'exécutable ne sera pas construit. Idéalement, je voudrais être en mesure de dire 'ld' lien statique autant qu'il peut et ne parviennent pas à l'objet partagé bibliothèque si une bibliothèque statique ne peut pas être trouvé.
Dans le interium j'ai essayé quelque chose comme gcc -static -lib1 -lib2 -shared -lib3rdparty foo.c -o foo.exe
dans l'espoir que 'ld' permettrait de lier statiquement dans lib1 et lib2 mais seulement un moment de l'exécution de la dépendance sur les lib3rdparty. Malheureusement, cela ne fonctionne pas comme prévu; au lieu de la -shared
drapeau a remplacé le -static
drapeau et tout ce qui a été compilé que partagés objets.
Est la liaison statique d'un tout-ou-rien, ou est-il une façon pour moi de mélanger et assortir?
Vous devez vous connecter pour publier un commentaire.
Regardant ce fil vous pouvez voir qu'il peut être fait. Les mecs de chez GNU suggèrent