Référence non définie à 'dlsym'
J'ai vu beaucoup de des postes similaires, mais a essayé tous les trucs dans le livre et ai encore de la difficulté. Tout fonctionnait bien, mais après l'installation/retrait de wireshark avec certains composants/disselectors tout a foiré. Je ne me souviens pas exactement de ce qui bibliothèques/packages ai désinstallé, mais probablement beaucoup plus que j'ai remarqué.
Si je créer un simple main.cpp fichier comme celui-ci:
#include <SQLAPI.h>
int main()
{
SAConnection con;
return 0;
}
et essayer
g++ main.cpp -lsqlapi -ldl
il me donne des messages d'erreur suivants:
/usr/local/lib/libsqlapi.so: undefined reference to `dlsym'
/usr/local/lib/libsqlapi.so: undefined reference to `dlerror'
/usr/local/lib/libsqlapi.so: undefined reference to `dlopen'
/usr/local/lib/libsqlapi.so: undefined reference to `dlclose'
collect2: error: ld returned 1 exit status
J'ai essayé de mettre ldl-avant -lsqlapi comme certains l'ont suggéré que l'ordre est important. Si j'utilise gcc au lieu de g++ l'erreur est:
/usr/bin/ld: /tmp/ccwBI4tj.o: undefined reference to symbol '__gxx_personality_v0@@CXXABI_1.3'
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Je suis en mesure de compiler et d'exécuter le fichier si SAConnection est supprimé.
Je ne pense pas que cela ait quelque chose à voir avec SQLAPI, parce que je rencontrer des problèmes similaires avec libboost. Je n'ai pas un petit exemple de code, mais quand je compile un projet qui a été compilé avec succès la semaine dernière, j'obtiens l'erreur:
/usr/bin/ld: debug/components/helloworld/HelloWorld.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
/usr/lib/x86_64-linux-gnu/libboost_system.so.1.53.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Ce projet est à l'aide d'un Makefile qui a été inchangée, de sorte qu'il doit être quelque chose sur mon système qui n'est pas correct. J'ai essayé de réinstaller build-essential.
Utiliser Ubuntu 13.10 64 bits avec g++ version 4.8.1.
source d'informationauteur evinje
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la solution; réglage de l'-Wl,--no-comme-nécessaire avant de ldl-La nouvelle compilation commande est
Apparemment, il a quelque chose à voir avec les versions récentes de gcc/ld défaut de liaison avec --que de besoin.