2018-08-06 03:21:07 UTC
I build Qt and QtC-4.7 myself, the first version of Qt (5.6) is on the
loader path (using ld.so.conf) and is part of my dev environement, the
second version of Qt (5.9) is installed beside QtC and is not on the
loader path (QtC 4.7 requires Qt>=5.9).
I originally had LD_LIBRARY_PATH pointing to Qt-5.6, but then QtC
refused to start because libqxcb.so (Qt 5.9) was picking up it's
dependencies from Qt-5.6.
I use Qt plugin loading debug and ldd, both pointed me to the same direction.
I then realised that using ld.so.conf worked around the problem for
Qt's own plugins, but i still have this problem with QtC's
libexec/clangbackend, the loader resolves it's dependencies to the
"other" Qt install (5.6, on the loader path).
If i'm not wrong, when i build Qt LD_LIBRARY_PATH is set and point to
Qt-5.6, but i use Qt-5.9's qmake to configure QtC.
Is there a way to force all these binaries to only rely on a reliable
rpath, where Qt-5.9 will have proiority?
Here is what I have (Qt-5.6 is installed in /opt/navico-sdk, Qt-5.9
and QtC are installed in /opt/navico-sdk/ide):
$ patchelf --print-rpath /opt/navico-sdk/ide/bin/qtcreator
$ patchelf --print-rpath /opt/navico-sdk/ide/libexec/qtcreator/clangbackend
QtCreator has no loader path issues, but clangbackend has.
I would like to find a proper solution before starting to do `patchelf
--set-rpath`... That would be cleaner IMHO. :)
Any point out?