2010-09-07 5 views
2

lors de la compilation de dynlinktest.c il donne l'erreur suivante:Que fait l'option `cc`` -ldl` dans la commande suivante?

unipro @ ubuguest: ~ $ cc dynamiclinktest.c -o dynamiclinktest /tmp/ccli8dp2.o: En fonction main': dynamiclinktest.c:(.text+0x53): undefined reference to dlopen » dynamiclinktest.c :(.text + 0x83): undefined reference to dlsym' dynamiclinktest.c:(.text+0x109): undefined reference to dlclose » collect2: ld a renvoyé 1 état de sortie

après l'utilisation de cc -o dynlinktest.c dynlinktest -ldl il fonctionne. je n'ai pas compris pourquoi il est nécessaire d'utiliser -ldl?

edit1: laisser de l'espace avant l'erreur.

+0

Essayez 'man cc'. Il vous donnera quelques informations sur votre compilateur et ses options. – harald

+0

La raison pour laquelle j'ai introduit les espaces avant votre ligne de commande et message d'erreur était qu'ils soient formatés correctement; C'est la convention que Stack Overflow utilise pour marquer le code et la sortie verbatim. Je suggère que vous remettiez les espaces pour rendre le message d'erreur plus facile à lire. –

Répondre

5

-ldl inclut la référence à la bibliothèque qui a les symboles pour charger des bibliothèques dynamiques (telles que dlopen).

Questions connexes