[c++] Link error "undefined reference to `__gxx_personality_v0'" and g++

Possible Duplicate:
Undefined Symbol ___gxx_personality_v0 on link

I have a problem with the following program.

// fkt.cpp

#include "fkt.h"

int add2(int a, int b)
{
    return a+b;
}

And the header:

// fkt.h

int add2(int a, int b);

Now I compile this with:

g++ -c fkt.cpp

Now I run nm and get:

00000000 T _Z6add2ii
         U __gxx_personality_v0

When I want to use the function anywhere I get:

(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'

How can I solve this problem? (I'm using Ubuntu Linux.)

This question is related to c++ g++

The answer is


It sounds like you're trying to link with your resulting object file with gcc instead of g++:

Note that programs using C++ object files must always be linked with g++, in order to supply the appropriate C++ libraries. Attempting to link a C++ object file with the C compiler gcc will cause "undefined reference" errors for C++ standard library functions:

$ g++ -Wall -c hello.cc
$ gcc hello.o       (should use g++)
hello.o: In function `main':
hello.o(.text+0x1b): undefined reference to `std::cout'
.....
hello.o(.eh_frame+0x11):
  undefined reference to `__gxx_personality_v0'

Source: An Introduction to GCC - for the GNU compilers gcc and g++