Where is version in so's set? Seems to have disappeared w/gcc upgrade?

Xi Ruoyao ryxi@stu.xidian.edu.cn
Tue Jun 13 19:45:00 GMT 2017


On 2017-06-13 11:46 -0700, L A Walsh wrote:
> I compiled & installed the gcc suite to get the 6.x toolset (only had 4.x
> available before).
> 
> A side effect of this has cropped up in various libs generated
> by the new toolset that other tools link to:
> 
> /home/opt/Qt/5.8/gcc_64/plugins/platforms/libqxcb.so: 
> /usr/lib64/libQt5Core.so.5: no version information available (required 
> by /home/opt/Qt/5.8/gcc_64/plugins/platforms/libqxcb.so)
> 
> Why did this disappear w/new gcc?   Did I leave off some
> switch in gcc-config or in compiling or linking the libs?
> 
> Why is an internal version number needed?  Wasn't the
> ".so" extension supposed to allow for library versioning
> along the lines of:
> 
> foo.so.4.3
> foo.so.5.8
> foo.so.4 => foo.so.4.3
> foo.so.5 => foo.so.5.8
> foo.so => foo.so.5

Libstdc++ has been using version number 6.0.x for a long time.
For each release we bump x and add some symbols.

See <https://gcc.gnu.org/onlinedocs/gcc-6.3.0/libstdc++/manual/manual/abi.html>.

Your issue happens because an ABI change in GCC 5 release
(most likely).  The page
<https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html>
should help you.

I think building your libqxcb.so with -D_GLIBCXX_USE_CXX11_ABI=0
can solve your issue now.  But as the BLFS book suggested
<http://linuxfromscratch.org/blfs/view/systemd/general/gcc.html>,
you should either recompile all of your C++ shared libraries,
or configure your GCC 6 with
"--with-default-libstdcxx-abi=gcc4-compatible", in order to
prevent this issue happening again.
> (not that such is used very often on linux for some reason).
> 
> Thanks much!
> Linda
> 
> 
> 
-- 
Xi Ruoyao <ryxi@stu.xidian.edu.cn>
School of Aerospace Science and Technology, Xidian University



More information about the Gcc-help mailing list