[Interest] Binary compatibility between 5.5 and 5.6

Konstantin Tokarev annulen at yandex.ru
Tue Oct 25 16:31:14 CEST 2016



25.10.2016, 17:26, "Olivier B." <perso.olivier.barthelemy at gmail.com>:
>  I encountered some issues trying to link a library that uses Qt 5.6
>  into a program that uses Qt 5.5 on linux (providing the 5.5 libs to
>  the linker when the lib needs 5.6 :P )
>
>  This resulted in lots of undefined reference to someQtSymbol()@Qt_5
>
>  Indeed, doing 'objdump -CT' on my 5.5.1 Qt5Core.so gives something like
>  000000000032fc00 g DF .text 0000000000000018 Base
>  QLibrary::metaObject() const
>
>  And objdump on the 5.6 version gives
>  0000000000313e80 g DF .text 0000000000000018 Qt_5
>  QLibrary::metaObject() const
>
>  Those two were custom built with the same script/tools/machine. So i
>  am assuming the change in "Base" -> "Qt_5" is induced by a change in
>  the sources? (i could find no "Qt_5" string in the 5.6 sources package
>  that could be related to this)

mkspecs/features/qt_module.prf in qtbase is doing that

You can disable symbol versioning with CONFIG+=no_linker_version_script
in mkspec.


>  A few questions come to my mind (Obviously i am not asking for a magic
>  solution to link a lib compiled for 5.6 with 5.5.1, it's more out of
>  curiosity)
>
>   - Won't that cause binary compatibility issues? Or is the link of
>  Base -> Qt_5 allowed, just not the opposite? I don't really know much
>  about that column of objdump
>
>  - Why was this introduced in 5.6 and not at the start of Qt5?
>  Shouldn't it be called QT_5.6 if it prevents link with older Qt5
>  libraries? Or should it already be present in my Qt5.5 libraries, in
>  function of some qt configure option that i forgot to add before
>  build?
>  _______________________________________________
>  Interest mailing list
>  Interest at qt-project.org
>  http://lists.qt-project.org/mailman/listinfo/interest


-- 
Regards,
Konstantin



More information about the Interest mailing list