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

C++G++

C++ Problem Overview


> 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.)

C++ Solutions


Solution 1 - C++

If g++ still gives error Try using:

g++ file.c -lstdc++

Look at this post: https://stackoverflow.com/questions/329059/what-is-gxx-personality-v0-for

Make sure -lstdc++ is at the end of the command. If you place it at the beginning (i.e. before file.c), you still can get this same error.

Solution 2 - C++

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++

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiondevelhevelView Question on Stackoverflow
Solution 1 - C++phoxisView Answer on Stackoverflow
Solution 2 - C++onteria_View Answer on Stackoverflow