J'ai une bibliothèque statique et une bibliothèque dynamique avec le même nom: libclsocket.a et libclsocket.so Lorsque je spécifie la bibliothèque que je veux lier, il suffit d'entrer -lclsocket comme bibliothèque. Mon programme se conforme et fonctionne parfaitement bien, mais quelle bibliothèque est-ce que j'utilise? la bibliothèque statique ou la bibliothèque dynamique? Je veux donner à mon ami mon programme, et je ne suis pas sûr Si j'ai besoin d'inclure les bibliothèques dans la version. C++, codelite, pcLinuxOS 2010Dans linux comment puis-je savoir si je lier à une bibliothèque statique ou dynamique?
Répondre
Vous pouvez essayer d'exécuter ldd
sur l'exécutable et de voir si le fichier .so correspondant est détecté comme requis dans la liste des dépendances.
La page de manuel de ldd est here.
Il est lié aux bibliothèques partagées. Alors, comment puis-je lier à une bibliothèque statique? Je suppose également que les bibliothèques partagées sont par défaut. – TheFuzz
Si vous utilisez le drapeau -static
, tous les composants seront rendus statiques. Et -l
peut inclure des bibliothèques partagées. Si vous spécifiez le nom de fichier de la bibliothèque statique (par exemple avec /usr/lib/libfoo.a
par exemple, pas de -l
ajouté au préalable), vous obtiendrez l'effet souhaité.
- 1. Liaison statique à une bibliothèque dynamique. glibc
- 2. Comment savoir si je suis statique ou un objet?
- 3. Distribuer la bibliothèque statique/dynamique à Linux via .deb
- 4. Comment puis-je lier une bibliothèque dynamique dans Xcode?
- 5. Comment lier une bibliothèque dynamique avec qmake dans mon application?
- 6. comment lier la bibliothèque statique dans la bibliothèque dynamique dans gcc
- 7. Comment lier à une bibliothèque statique en C?
- 8. Comment lier une bibliothèque statique dans un fichier source cpp?
- 9. Comment lier une bibliothèque statique dans Visual C++ 2008?
- 10. comment utiliser ma propre bibliothèque dynamique dans linux (Makefile)
- 11. chargement dynamique de la bibliothèque statique?
- 12. comment savoir si le disque est basique ou dynamique?
- 13. Comment modifier une cible Xcode existante de dynamique à statique?
- 14. comment lier la bibliothèque statique python avec mon programme C++
- 15. Comment affecter une ressource statique ou dynamique à l'animation?
- 16. Dois-je lier sqlite3 en tant que code objet brut ou en tant que bibliothèque statique dans une application C++?
- 17. Lien vers une bibliothèque statique liée à une bibliothèque statique
- 18. Restriction des symboles dans une bibliothèque statique Linux
- 19. Lien une bibliothèque partagée statique à ma bibliothèque partagée
- 20. Comment savoir si un Type est une classe statique?
- 21. Liaison statique des librairies dans linux
- 22. Comment savoir si je cours depuis le GAC ou pas?
- 23. comment lier la bibliothèque partagée par rapport à une autre bibliothèque partagée sous Linux?
- 24. J'ai une bibliothèque dynamique, comment savoir si elle appelle malloc pendant l'exécution?
- 25. Création d'un problème statique Lib dans Linux
- 26. Une bibliothèque statique XCode peut-elle nécessiter un lien avec une bibliothèque dynamique?
- 27. Liaison statique et dynamique
- 28. MFC CSocket dans une bibliothèque statique
- 29. Comment savoir si l'applet ou l'application est
- 30. Comment générer une bibliothèque d'importation (libsample.a) à partir de la bibliothèque dynamique (libsample.so) sous Linux
Vous n'avez pas spécifié l'indicateur '-static' lors de la construction avec GCC, il est donc probable que vous liez l'objet partagé. Comme @Soo Wei Tan a répondu, vous pouvez utiliser 'ldd' sur le binaire pour déterminer ses dépendances de l'éditeur d'exécution. – birryree
Puis-je spécifier que la bibliothèque de liens doit être liée statiquement? – TheFuzz
vous pouvez sélectivement lien statique en passant le nom complet de la bibliothèque. Comme 'gcc -o OutFile -l: libclsocket.a'. Notez le ':', c'est très important. Je voudrais trouver la documentation officielle pour ce comportement, mais les pages de manuel de 'gcc' ne mentionnent pas cette utilisation. –
birryree