Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Getting load library error or linking error for XCB plugin of statically linked Qt5.6.1



  • Trying to create C++ Qt5.6.1 application and start it on Debian.
    Getting either link error or load library error.

    Qt build to a static libs, used configuration

        configure -release -confirm-license -opensource -static 
    -no-dbus -no-openssl -no-qml-debug -no-opengl 
    -qt-freetype -qt-xcb 
    -nomake tools -nomake tests -nomake examples 
    -no-sql-db2 -no-sql-oci -no-sql-tds -no-sql-sqlite2 -no-sql-odbc -no-sql-ibase -no-sql-psql 
    -skip doc -skip imageformats -skip webchannel -skip webengine -skip webview -skip sensors -skip serialport -skip script -skip multimedia
    

    Project created with Cmake, libs are specified in this way:

    SET(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "${QT5_LIB_ROOT}/cmake")
    
    FIND_PACKAGE(Qt5Core REQUIRED)
    FIND_PACKAGE(Qt5Gui REQUIRED)
    FIND_PACKAGE(Qt5Widgets REQUIRED)
    FIND_PACKAGE(Qt5Network REQUIRED)
    
    FIND_PACKAGE( PNG REQUIRED )
    FIND_PACKAGE( ZLIB REQUIRED)
    FIND_PACKAGE( Threads REQUIRED )
    
    IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
       SET(QT_LIBS
          libqtharfbuzzng_debug.a
          libqtpcre_debug.a
          libQt5PlatformSupport_debug.a
          libxcb-static_debug.a
          )
    ELSE()
       SET(QT_LIBS
          libqtharfbuzzng.a
          libqtpcre.a
          libQt5PlatformSupport.a
          libxcb-static.a
          )
    ENDIF(CMAKE_BUILD_TYPE STREQUAL "Debug")
    
    SET(OS_SPECIFIC_LIBS
       dl
       Qt5::QXcbIntegrationPlugin
       ${CMAKE_THREAD_LIBS_INIT}
       ${ZLIB_LIBRARIES}
       ${PNG_LIBRARY} )
    
    FOREACH(lib_name ${QT_LIBS})
       IF(NOT EXISTS ${QT5_LIB_ROOT}/${lib_name})
          MESSAGE(FATAL_ERROR "Could not locate required Qt lib ${QT5_LIB_ROOT}/${lib_name}")
       ENDIF()
    
       LIST(APPEND OS_SPECIFIC_LIBS ${QT5_LIB_ROOT}/${lib_name})
    ENDFOREACH(lib_name)
    

    And if I'm importing XCB plugin in the code ( Q_IMPORT_PLUGIN(QXcbIntegrationPlugin) it gives me link error:

        /Qt5/plugins/platforms/libqxcb.a(qxcbmain.o): In function `QXcbIntegrationPlugin::create(QString const&, QStringList const&, int&, char**)':
    qxcbmain.cpp:(.text+0x67): undefined reference to `QXcbIntegration::QXcbIntegration(QStringList const&, int&, char**)'
    

    Anf if I don't import plugin - it just not start with error:

    This application failed to start because it could not find or load the Qt platform plugin "xcb"
    

    Any help? advice?

    Thanks.


Log in to reply