#1 Le 21/12/2006, à 16:06
- CasseTaTele
Erreur de compilation référence indéfinie
Bonjour,
j'ai un bug à la compilation et j'arrive pas à me dépétrer.
voici une partie de l'erreur qui m'ennuie :
/usr/local/digiclops/lib/libdigiclops.a(pgrcameralistener.o): In function `std::list<PGRCamera*, std::allocator<PGRCamera*> >::_M_create_node(PGRCamera* const&)':
pgrcameralistener.cpp:(.gnu.linkonce.t._ZNSt4listIP9PGRCameraSaIS1_EE14_M_create_nodeERKS1_+0x9): référence indéfinie vers « std::__default_alloc_template<true, 0>::allocate(unsigned int)»
j'ai plusieurs erreurs du meme style à chaque fois j'ai des référence indéfinies vers une de ces fonctions :
std::__default_alloc_template<true, 0>::allocate(unsigned int)
std::__default_alloc_template<true, 0>::deallocate(void*, unsigned int)
Le problème c'est que ça plante sur des librairies de la caméra que j'utilise et dont je ne maitrise pas le code.
j'ai fais un 'nm' de libdigiclops.a et j'obtiens :
sebastien@sebastien-desktop:/usr/local/digiclops/lib$ nm -o -C libdigiclops.a | grep allocate
libdigiclops.a:digi-cam.o: U std::__default_alloc_template<true, 0>::deallocate(void*, unsigned int)
libdigiclops.a:digi-cam.o: U std::__default_alloc_template<true, 0>::allocate(unsigned int)
libdigiclops.a:digi-grab.o: U std::__default_alloc_template<true, 0>::deallocate(void*, unsigned int)
libdigiclops.a:digi-grab.o: U std::__default_alloc_template<true, 0>::allocate(unsigned int)
libdigiclops.a:pgrcameralistener.o: U std::__default_alloc_template<true, 0>::deallocate(void*, unsigned int)
libdigiclops.a:pgrcameralistener.o: U std::__default_alloc_template<true, 0>::allocate(unsigned int)
Le 'U' signifie que le lien n'est pas définie, mais comment savoir ou se trouve cette fonction qui semble manquer ? comment résoudre ce problème ? Quelques pistes ?
Hors ligne
#2 Le 21/12/2006, à 17:41
- CasseTaTele
Re : Erreur de compilation référence indéfinie
Je crois qu'il me manque le fichier 'stl_alloc.h' ...
du moins il n'est pas dans /usr/include/bits mais dans /usr/include/g++-3
j'ai essayé différentes versions de gcc ...
dans /usr/lib je vois pas quelle librairie pourrait etre la librairie stl...
Faut t'il ré-installer un package (si oui lequel)?
Dernière modification par CasseTaTele (Le 21/12/2006, à 17:49)
Hors ligne
#3 Le 22/12/2006, à 11:00
- CasseTaTele
Re : Erreur de compilation référence indéfinie
J'ai installé plusieurs versions de libstdc++ , mais je sais pas si il pointe dessus...
sebastien@sebastien-desktop:/usr/lib$ ls libst*
libstartup-notification-1.so.0 libstdc++-3-libc6.2-2-2.10.0.so libstdc++.so.5 libstdc++.so.6.0.8
libstartup-notification-1.so.0.0.0 libstdc++-libc6.2-2.a.3 libstdc++.so.5.0.7 libstlport_gcc.so.4.6
libstdc++-3-libc6.2-2-2.10.0.a libstdc++-libc6.2-2.so.3 libstdc++.so.6
J'ai lu que les librairies standard étaient inclus dans gcc donc pourquoi j'obtiens ces erreurs...?
Hors ligne
#4 Le 24/12/2006, à 00:34
- gene69
Re : Erreur de compilation référence indéfinie
/usr/local/digiclops/lib/libdigiclops.a(pgrcameralistener.o): In function `std::list<PGRCamera*, std::allocator<PGRCamera*> >::_M_create_node(PGRCamera* const&)':
pgrcameralistener.cpp:(.gnu.linkonce.t._ZNSt4listIP9PGRCameraSaIS1_EE14_M_create_nodeERKS1_+0x9): référence indéfinie vers « std::__default_alloc_template<true, 0>::allocate(unsigned int)»
n'est ce pas là tout juste une erreur de type?
Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion
Hors ligne