11
votes

Projet de construction impliquant CMAKE, comment puis-je le faire au courant des bibliothèques

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: xxx

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é?

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): xxx

mais comment puis-je le faire maintenant?

mise à jour:

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?

est là un moyen de démonter /lib64/libdl.so.2 pour s'assurer qu'il a des références Dlopen, etc. < p> Le problème semble maintenant guider les outils de construction à la version correcte de la bibliothèque.


0 commentaires

3 Réponses :


1
votes

Vous devez probablement ajouter cible_link_libraries () - voir Link Texte


1 commentaires

Cela pourrait fonctionner, mais ce n'est pas "mon" projet, de préférence, je ne veux pas modifier les fichiers CMAKELIST.TXT.



1
votes

ajoutez ceci dans cmakelists.txt et il devrait fonctionner:

SET (CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -ldl")


1 commentaires

Ceci est spécifique Linux et non la meilleure solution, voir référence à Cumake_DL_Libs ci-dessus.



37
votes

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} Pour lier contre IDL . Il devrait ressembler à ce problème: xxx


2 commentaires

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