J'ai un projet C++ (g ++/raw Makefile) conçu pour linux, je lia statiquement tout ce qui fonctionnait bien depuis des lustres. Maintenant, je veux construire des binaires à la fois statiquement et dynamiquement liés. La commande suivante est utilisée dans mon Makefile pour créer la bibliothèque dynamique (disons libtest):comment utiliser ma propre bibliothèque dynamique dans linux (Makefile)
$ (CXX) -shared -Wl, -soname, libtest.so.1 -o libtest.so.1.0.0 $ (LIBTEST_OBJS)
la sortie est libtest.so.1.0.0 qui porte le nom si libtest.so.1
J'ai trouvé au moins un lien symbolique libtest.so -> libtest.so.1.0.0 est requis pour lier mon programme client qui utilise réellement la bibliothèque libtest.so.1.0.0 ci-dessus générée.
Ici, ma question est de savoir si je veux construire mon logiciel, quelle est la manière standard de gérer le lien symbolique ci-dessus? Clairement, je ne veux pas ce truc supplémentaire dans mon répertoire source, mais il est nécessaire de construire mon binaire client, dois-je le créer en tant que lien temporaire pour construire le client, puis le supprimer une fois terminé? ou dois-je créer un répertoire pour héberger la bibliothèque generate .so et ses liens et y laisser tout jusqu'à ce que je fasse "make install" pour les installer dans d'autres répertoires spécifiés? Sera cool à présent quelle est la manière standard de le faire.
Ou peut-être que la manière dont je génère des bibliothèques est incorrecte? dois-je juste générer libtest.so (en tant que bibliothèque réelle, pas un lien) pour lier mon exécutable, puis renommer la bibliothèque et créer ces liens en faisant `` make install ''?
toute contribution sera appréciée. :)
+ 1 L'utilisation de libtool vous facilitera la tâche si vous décidez de le porter de Linux à autre chose - libtool gère tous les problèmes de bibliothèques partagées qui dépendent de la plateforme. –