g++ linker: la force de la liaison statique si statique de la bibliothèque existe?
J'ai un programme qui relie de nombreuses bibliothèques. g++
, par défaut, préfère lien vers les bibliothèques partagées, même si l'archive correspondante existe.
Comment puis-je modifier cette préférence à préférer statique archives sur les bibliothèques dynamiques, si une bibliothèque statique existe?
Remarque, j'ai utilisé -static
option, mais il essaie de trouver de bibliothèque statique pour toutes les bibliothèques qui n'est pas ce que je veux.
- Voir aussi: stackoverflow.com/questions/4500158/...
Vous devez vous connecter pour publier un commentaire.
Lien
zlib
etlibfoo
comme statique, etlibbar
dynamique .--as-needed
va tomber toute portion inutilisée de la bibliothèque dynamique.Lorsque vous ne voulez lier statiquement une ou deux bibliothèques avec le reste, y compris le système de bibliothèques, d'être dynamique, il est souvent plus facile de simplement référence à la bibliothèque statique par son nom complet. I. e. plutôt que d'utiliser
-l
et-L
pour obtenir g++ pour résoudre une bibliothèque à partir de ce qu'il trouve, simpy ajouter le chemin d'accès complet à la bibliothèque comme une entrée. La prise de la commande g++ ci-dessus, pour lier unmain.o
principale de l'application du programme de statique libz et libtruc et dynamique libbar et libglib etc. :Modifier 3 Au 17 Août:
J'ai juste trébuché à travers cette réponse qui va plus dans le détail, et offre un moyen alternatif (
-l:
) pour spécifier la bibliothèque directement.