2012-11-28 4 views
0

lors de la compilation C++ projet,référence non définie à `atexit »

je me suis une erreur pour ceci:

/usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu/crt1.o: In function `_start': 
(.text+0xc): undefined reference to `__libc_csu_fini' 
/usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu/crt1.o: In function `_start': 
(.text+0x11): undefined reference to `__libc_csu_init' 

....: undefined reference to `atexit' 
collect2: error: ld returned 1 exit status 

c'est le code:

std :: atexit (myExitFunction) ;

la fonction myExitFunction a été correctement déclarée. Pourquoi se plaindrait-il de atexit?

Merci d'avance.

+2

Pouvez-vous modifier et ajouter plus de code à ce problème? – Vargan

+0

oui, j'ai mis à jour plus de détails d'erreur – olidev

+0

Je ne sais pas si vous avez un modèle de code dans votre projet, mais peut-être cela peut vous aider: http://ubuntuforums.org/showthread.php?t=1388438 – Vargan

Répondre

0

Il s'agit d'un message d'erreur de liaison. Le compilateur a réussi à trouver la déclaration de std::atexit(), mais l'éditeur de liens ne trouve aucune définition compilée de cette fonction.

Essayez de lier votre code en ajoutant cet argument à l'éditeur de liens:

-stdlib=libc++ 
+0

Je pense que je dois vous poser une autre question. J'utilise cmake pour compiler mon projet C++. Je suis assez nouveau avec ça. Où dois-je placer cet argument? merci d'avance – olidev

+0

J'ai réussi à utiliser: set (CMAKE_CXX_FLAGS_INIT "-Wall -stdlib = libC++") mais le problème persiste – olidev

+1

Je ne suis pas un utilisateur régulier de 'cmake', mais d'après [un message sur sa liste de diffusion] (http://www.cmake.org/pipermail/cmake/2006-October/011517.html), vous devez également définir 'CMAKE_EXE_LINKER_FLAGS'. –