[Marble-devel] Marble linking against wrong version of Qt
Dennis Nienhüser
earthwings at gentoo.org
Tue Jun 4 15:15:34 UTC 2013
Hi,
is /opt/Qt/4.8.4/lib part of the library search path?
Try LD_LIBRARY_PATH=/opt/Qt/4.8.4/lib ldd
/opt/marble/lib/libmarblewidget.so | grep Qt
Regards,
Dennis
Am 04.06.2013 16:13, schrieb Josh Knox:
> On 06/03/2013 05:16 PM, Josh Knox wrote:
>> Hi!
>>
>> In my project I'm using a local build of Qt 4.8.4. I have it installed
>> in /opt/Qt/4.8.4. When I build Marble, I put the location of qmake for
>> this version on my path:
>>
>> export PATH=/opt/Qt/4.8.4/bin:$PATH
>>
>> The correct version of Qt is found:
>>
>> %> which qmake
>> /opt/Qt/4.8.4/bin/qmake
>>
>>
>> When I run cmake it finds the correct version:
>>
>> %> cmake -DCMAKE_BUILD_TYPE=Debug -DQTONLY=TRUE \
>> -DCMAKE_INSTALL_PREFIX=/opt/marble ../marble-stable/sources
>> ...
>> ...
>> Found Qt4: /opt/Qt/4.8.4/bin/qmake (found version "4.8.4")
>> ...
>> ...
>>
>>
>> make runs fine but when I run it with the rest of my application, also
>> built against my Qt4.8.4 build I get this runtime error:
>>
>> Cannot mix incompatible Qt library (version 0x40801) with this
>> library (version 0x40804)
>> Aborted (core dumped)
>>
>>
>> And indeed I discover that the marble libs are linked against the
>> system's Qt. Here's the ldd for my app and the marble lib I built:
>>
>> %> ldd /opt/lw/bin/playtracks
>> ...
>> ...
>> libmarblewidget.so.15 => /opt/marble/lib/libmarblewidget.so.15
>> (0x00007f90bef3b000)
>> libQtGui.so.4 => /opt/Qt/4.8.4/lib/libQtGui.so.4
>> (0x00007f90be3ac000)
>>
>>
>>
>>
>> %> ldd /opt/marble/lib/libmarblewidget.so
>> linux-vdso.so.1 => (0x00007fff77fff000)
>> libQtCore.so.4 => /usr/lib/x86_64-linux-gnu/libQtCore.so.4
>> (0x00007f175e34e000)
>> libQtGui.so.4 => /usr/lib/x86_64-linux-gnu/libQtGui.so.4
>> (0x00007f175d680000)
>> libQtXml.so.4 => /usr/lib/x86_64-linux-gnu/libQtXml.so.4
>> (0x00007f175d43c000)
>> libQtSvg.so.4 => /usr/lib/x86_64-linux-gnu/libQtSvg.so.4
>> (0x00007f175d1e4000)
>> libQtNetwork.so.4 =>
>> /usr/lib/x86_64-linux-gnu/libQtNetwork.so.4 (0x00007f175ce98000)
>>
>>
>> Note the different Qt libraries. Therein lies my problem. The marble
>> build doesn't link with the Qt it found during the cmake pass.
>>
>>
>> So, my question is how to get marble to build against my Qt version
>> rather than the system's version.
>>
>> Thanks!
>>
>> Josh
>>
>> _______________________________________________
>> Marble-devel mailing list
>> Marble-devel at kde.org
>> https://mail.kde.org/mailman/listinfo/marble-devel
>>
>>
>
> Some more details:
>
> If I query cmake for variables referring to Qt libraries, it all
> refers to the correct libraries for my build:
>
> %> cmake -LA | grep Qt | grep ".so"
>
> PHONON_LIBRARY:FILEPATH=/opt/Qt/4.8.4/lib/libphonon.so
> QT_PHONONWIDGETS_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/designer/libphononwidgets.so
>
> QT_PHONON_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libphonon.so
> QT_PHONON_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libphonon.so
> QT_QCNCODECS_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/codecs/libqcncodecs.so
>
> QT_QDECLARATIVEVIEW_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/designer/libqdeclarativeview.so
>
> QT_QGENERICBEARER_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/bearer/libqgenericbearer.so
>
> QT_QGIF_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/imageformats/libqgif.so
>
> QT_QGLGRAPHICSSYSTEM_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/graphicssystems/libqglgraphicssystem.so
>
> QT_QICO_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/imageformats/libqico.so
>
> QT_QJPCODECS_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/codecs/libqjpcodecs.so
>
> QT_QJPEG_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/imageformats/libqjpeg.so
>
> QT_QKRCODECS_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/codecs/libqkrcodecs.so
>
> QT_QMNG_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/imageformats/libqmng.so
>
> QT_QSQLITE2_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/sqldrivers/libqsqlite2.so
>
> QT_QSQLITE_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/sqldrivers/libqsqlite.so
>
> QT_QSQLODBC_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/sqldrivers/libqsqlodbc.so
>
> QT_QSVGICON_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/iconengines/libqsvgicon.so
>
> QT_QSVG_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/imageformats/libqsvg.so
>
> QT_QT3SUPPORTWIDGETS_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/designer/libqt3supportwidgets.so
>
> QT_QT3SUPPORT_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQt3Support.so
> QT_QT3SUPPORT_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQt3Support.so
> QT_QTCLUCENE_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQtCLucene.so
> QT_QTCLUCENE_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQtCLucene.so
> QT_QTCORE_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQtCore.so
> QT_QTCORE_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQtCore.so
> QT_QTDECLARATIVE_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQtDeclarative.so
> QT_QTDECLARATIVE_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQtDeclarative.so
>
> QT_QTDESIGNERCOMPONENTS_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQtDesignerComponents.so
>
> QT_QTDESIGNERCOMPONENTS_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQtDesignerComponents.so
>
> QT_QTDESIGNER_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQtDesigner.so
> QT_QTDESIGNER_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQtDesigner.so
> QT_QTGUI_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQtGui.so
> QT_QTGUI_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQtGui.so
> QT_QTHELP_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQtHelp.so
> QT_QTHELP_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQtHelp.so
> QT_QTIFF_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/imageformats/libqtiff.so
>
> QT_QTMULTIMEDIA_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQtMultimedia.so
> QT_QTMULTIMEDIA_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQtMultimedia.so
>
> QT_QTNETWORK_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQtNetwork.so
> QT_QTNETWORK_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQtNetwork.so
> QT_QTOPENGL_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQtOpenGL.so
> QT_QTOPENGL_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQtOpenGL.so
> QT_QTRACEGRAPHICSSYSTEM_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/graphicssystems/libqtracegraphicssystem.so
>
> QT_QTSCRIPTTOOLS_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQtScriptTools.so
> QT_QTSCRIPTTOOLS_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQtScriptTools.so
>
> QT_QTSCRIPT_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQtScript.so
> QT_QTSCRIPT_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQtScript.so
> QT_QTSQL_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQtSql.so
> QT_QTSQL_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQtSql.so
> QT_QTSVG_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQtSvg.so
> QT_QTSVG_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQtSvg.so
> QT_QTTEST_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQtTest.so
> QT_QTTEST_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQtTest.so
> QT_QTWCODECS_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/codecs/libqtwcodecs.so
>
> QT_QTWEBKIT_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQtWebKit.so
> QT_QTWEBKIT_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQtWebKit.so
> QT_QTXMLPATTERNS_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQtXmlPatterns.so
> QT_QTXMLPATTERNS_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQtXmlPatterns.so
>
> QT_QTXML_LIBRARY:STRING=/opt/Qt/4.8.4/lib/libQtXml.so
> QT_QTXML_LIBRARY_RELEASE:FILEPATH=/opt/Qt/4.8.4/lib/libQtXml.so
> QT_QWEBVIEW_PLUGIN_RELEASE:FILEPATH=/opt/Qt/4.8.4/plugins/designer/libqwebview.so
>
>
>
> Unfortunately the final libmarblewidget build result is still linked
> against the incorrect system Qt:
>
> %> ldd /opt/marble/lib/libmarblewidget.so | grep Qt
> libQtCore.so.4 => /usr/lib/x86_64-linux-gnu/libQtCore.so.4
> libQtGui.so.4 => /usr/lib/x86_64-linux-gnu/libQtGui.so.4
> libQtXml.so.4 => /usr/lib/x86_64-linux-gnu/libQtXml.so.4
> libQtSvg.so.4 => /usr/lib/x86_64-linux-gnu/libQtSvg.so.4
> libQtNetwork.so.4 => /usr/lib/x86_64-linux-gnu/libQtNetwork.so.4
> libQtWebKit.so.4 => /usr/lib/x86_64-linux-gnu/libQtWebKit.so.4
>
> libQtDeclarative.so.4=>/usr/lib/x86_64-linux-gnu/libQtDeclarative.so.4
> libQtScript.so.4 => /usr/lib/x86_64-linux-gnu/libQtScript.so.4
> libQtSql.so.4 => /usr/lib/x86_64-linux-gnu/libQtSql.so.4
> libQtXmlPatterns.so.4 =>
> /usr/lib/x86_64-linux-gnu/libQtXmlPatterns.so.4
>
>
>
> Still digging....
>
>
> Josh
> _______________________________________________
> Marble-devel mailing list
> Marble-devel at kde.org
> https://mail.kde.org/mailman/listinfo/marble-devel
>
More information about the Marble-devel
mailing list