undefined reference to '__gxx_personality_v0'

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Albert Oppenheimer

    undefined reference to '__gxx_personality_v0'

    I have a small program, test.c. It runs OK. This is on Linux (kernel
    2.6.8.1, GCC 3.4.1).

    I decided to convert it to C++ before expanding it to a larger program. I
    changed the filename to test.cpp and added

    extern "C" {
    }

    around main and all the non-static subroutines. It compiles OK, but when I
    link it, it says:

    test.o (.eh_frame+0x11 ): undefined reference to '__gxx_personal ity_v0'

    My program makes no reference to __gxx_personali ty_v0.

    What do I need to do to get this program to link as a C++ program?

    Thanks,
    Allie


  • Thomas Tutone

    #2
    Re: undefined reference to '__gxx_personal ity_v0'

    Albert Oppenheimer wrote:[color=blue]
    > I have a small program, test.c. It runs OK. This is on Linux (kernel
    > 2.6.8.1, GCC 3.4.1).
    >
    > I decided to convert it to C++ before expanding it to a larger program. I
    > changed the filename to test.cpp and added
    >
    > extern "C" {
    > }
    >
    > around main and all the non-static subroutines. It compiles OK, but when I
    > link it, it says:
    >
    > test.o (.eh_frame+0x11 ): undefined reference to '__gxx_personal ity_v0'
    >
    > My program makes no reference to __gxx_personali ty_v0.
    >
    > What do I need to do to get this program to link as a C++ program?[/color]

    This is platform specific, but try compiling (and linking) with "g++"
    rather than "gcc." Or, when you link, make sure you specify the C++
    library (which gcc does automatically if you use g++ as your command
    line rather than gcc).

    If you have further questions, you'll get better help asking in a
    platform-specific newsgroup.

    Best regards,

    Tom

    Comment

    • mlimber

      #3
      Re: undefined reference to '__gxx_personal ity_v0'

      Albert Oppenheimer wrote:[color=blue]
      > I have a small program, test.c. It runs OK. This is on Linux (kernel
      > 2.6.8.1, GCC 3.4.1).
      >
      > I decided to convert it to C++ before expanding it to a larger program. I
      > changed the filename to test.cpp and added
      >
      > extern "C" {
      > }
      >
      > around main and all the non-static subroutines. It compiles OK, but when I
      > link it, it says:
      >
      > test.o (.eh_frame+0x11 ): undefined reference to '__gxx_personal ity_v0'
      >
      > My program makes no reference to __gxx_personali ty_v0.
      >
      > What do I need to do to get this program to link as a C++ program?
      >
      > Thanks,
      > Allie[/color]

      The __gxx part indicates that this is a g++-specific implementation
      issue. The .eh_frame probably indicates that it is concerned with
      exception handling, code for which may be automatically inserted for
      C++ programs (but not for C). If so, you could disable exceptions with
      a compiler flag or link in the proper symbols from a library that came
      with your compiler (perhaps libstdc++?), which may not get pulled in
      with your current compiler flags. As the other respondent said, any
      follow-up should be directed to a GNU newsgroup see the FAQ for some
      alternate newsgroups:



      Cheers! --M

      Comment

      • Peter Most

        #4
        Re: undefined reference to '__gxx_personal ity_v0'

        Hello Albert,

        Albert Oppenheimer wrote:
        [color=blue]
        > I have a small program, test.c. It runs OK. This is on Linux (kernel
        > 2.6.8.1, GCC 3.4.1).
        >
        > I decided to convert it to C++ before expanding it to a larger program. I
        > changed the filename to test.cpp and added
        >[/color]
        This already enough to make it a C++ program. GCC will automatically compile
        it as a c++ program because of the cpp extension.
        [color=blue]
        > extern "C" {
        > }
        >
        > around main and all the non-static subroutines. It compiles OK, but when
        > I link it, it says:
        >[/color]
        It's not necessary. Remove the extern "C" stuff and try again, it should
        compile and link fine.
        You need the extern "C" only if you are calling a C function, like printf()
        from a C++ module. If you would like to know more, google for "name
        mangling" and you should find good explanations for it and what it's for.
        [color=blue]
        > test.o (.eh_frame+0x11 ): undefined reference to '__gxx_personal ity_v0'
        >
        > My program makes no reference to __gxx_personali ty_v0.
        >
        > What do I need to do to get this program to link as a C++ program?
        >
        > Thanks,
        > Allie[/color]

        hth Peter

        Comment

        • Albert Oppenheimer

          #5
          Re: undefined reference to '__gxx_personal ity_v0'

          Thanks, it linked and ran fine after I used g++.


          Comment

          Working...