__gnu_cxx error in OpenSolaris

Jonathan Wakely jwakely.gcc@gmail.com
Thu May 19 14:54:00 GMT 2011


On 19 May 2011 15:03,  <asyropoulos@aol.com> wrote:
>
>> ignore that ... you didn't say whether you looked at the libstdc++.so
>> libs in /opt/gcc-4.6.0 and whether any of them use ELF symbol
>> versioning, which might make them incompatible.
>
> I have compiled Qt with gcc 4.5.3 and 4.6.0 and now I am trying again
> with 4.6.0 that has been configured to use GNU ld and GNU as. As about
> the versioning thing I am not sure what you mean, bur I hope the following
> help:
>
> $ elfdump -v /usr/lib/libstdc++.so.6.0.14
>
> Version Needed Section:  .SUNW_version
>    index  file                        version
>      [2]  libm.so.2                   SUNW_1.2
>      [3]  libgcc_s.so.1               GCC_3.0              [ INFO ]
>      [4]                              GCC_3.3              [ INFO ]
>      [5]                              GCC_4.2.0

This shows that /usr/lib/libstdc++.so doesn't use symvers.

> $ elfdump -v /opt/gcc-4.6.0/lib/libstdc++.so.6.0.15
>
> Version Definition Section:  .SUNW_version
>    index  version                     dependency
>      [1]  libstdc++.so.6                                   [ BASE ]
>      [2]  GLIBCXX_3.4
>      [3]  GLIBCXX_3.4.1               GLIBCXX_3.4
>      [4]  GLIBCXX_3.4.2               GLIBCXX_3.4.1
> ...

This shows that /opt/gcc-4.6.0/lib/libstdc++.so does use symvers.

Therefore they are not compatible.

If you compile with gcc 4.6 you must ensure the library in /opt is
found.  I suspect the wrong libstdc++.so is being found at link time.

Another alternative would be to rebuild gcc 4.6 without symbol
versioning enabled so that you get compatibility with the lib from gcc
4.5



More information about the Gcc-help mailing list