Bonjour,
je développe un petit programme sous linux en utilisant le compilateur gcc.
Tant que je compilais du C tout allait bien. Les classes c++ que j'ai ajoutées compilent mais l'édition des liens ne marche pas.
J'utilise un fichier Makefile contenant la ligne mal menée lors de son appel :
psc1d: psc1d.cpp logger.o capture.o paquet.o utile.o
lecture_parametre.o alerte.o cgestionnaire.o cemetteur.o crecepteur.o
cpdest.o cliste.o cpsource.o
$(CC) -o $@ $^ -lpcap
psc1d.cpp est le programme principal qui a besoin des fichiers objets décrits dans la liste (il n'en manque pas).
L'execution de cette ligne du Makefile donne :
/root/tmp/ccgGH0xh.o(.text+0x3d): In function `handler(int)':
: undefined reference to `log_str(char const*)'
/root/tmp/ccgGH0xh.o(.text+0x5d): In function `handler_fils1(int)':
: undefined reference to `log_str(char const*)'
/root/tmp/ccgGH0xh.o(.text+0x9f): In function `handler_fils2(int)':
log_str est une procédure de logger.o, handler handler-fils1 handler_fils2 des proédures utilisées par le main.
... une tonne de lignes comme çà ...
|
cliste.o(.text+0x715): In function `cliste::erase()':
: undefined reference to `operator delete[](void*)'
cliste.o(.text+0x748): In function `cliste::erase()':
: undefined reference to `operator new[](unsigned int)'
cliste.o(.text+0x7f3): In function `cliste::erase()':
: undefined reference to `operator delete[](void*)'
cliste.o(.text+0x821): In function `cliste::erase()':
: undefined reference to `operator new[](unsigned int)'
cliste.o(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
make: *** [psc1d] Erreur 1
|
là je suis complètement perdu.
Y aurait-il des incompatibilités entre le C et le C++ au niveau de l'édition des liens?
Merci, par avance