Lorsque j'essaie de construire ce projet avec CMAKE et GCC sur une machine Linux (Debian) 64 bits, je reçois une erreur de la liaison: apparemment dlopen, dlclose, dlerror et DLSym sont des références à libdl.so. J'ai cette bibliothèque dans /lib64/libdl.so.2, mais pourquoi n'est-il pas trouvé? P> aurait-il été une normale "./configure; Fabriquer; Faire une installation d'installation, je aurais pu définir la variable Libs et émis la commande Configurer comme ceci (je pense): p> mais comment puis-je le faire maintenant? P > mise à jour: p> Il semble donc que la bibliothèque (ou au moins a) se trouve, mais ne contient pas les symboles en question. Peut-être tente-t-il avec la bibliothèque 32 bits dans / lib? P> est là un moyen de démonter /lib64/libdl.so.2 pour s'assurer qu'il a des références Dlopen, etc. P> < p> Le problème semble maintenant guider les outils de construction à la version correcte de la bibliothèque. p> p>
3 Réponses :
Vous devez probablement ajouter cible_link_libraries () - voir Link Texte P >
Cela pourrait fonctionner, mais ce n'est pas "mon" projet, de préférence, je ne veux pas modifier les fichiers CMAKELIST.TXT.
ajoutez ceci dans cmakelists.txt et il devrait fonctionner:
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ldl")
Ceci est spécifique Linux et non la meilleure solution, voir référence à Cumake_DL_Libs ci-dessus.
Comme cette question s'affiche sur Google et les deux réponses ne signalent pas la solution correcte ici, c'est le cas:
dans votre CMAKELIST.TXT Ajouter $ {CUKE_DL_LIBS} code> Pour lier contre IDL .
Il devrait ressembler à ce problème: p>
C'est le plus compatible Anwser, devrait être accepté.
Je veux ajouter que j'ai dû déplacer $ {CUKE_DL_LIBS} à la dernière position de la liste. Sinon, ça n'a pas fonctionné pour moi