[Interest] Binary compatibility between 5.5 and 5.6

Olivier B. perso.olivier.barthelemy at gmail.com
Tue Oct 25 16:25:50 CEST 2016


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)

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?



More information about the Interest mailing list