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

Qt 5.15.1 - Setup for app deployment



  • I have a very simple app that I call MyBooks and I want to be able to deploy to another machine that does not have Qt installed. The environment for development is Linux Mint 20 and the destination target is also.

    The application folder is arranged like this:

    application - bin // where the executable lives
    - lib // all Qt shared libraries listed with ldd
    - plugins // all Qt plugins for app and Sql Drivers
    - QtRPT/lib // third party library for reports
    - reports // XML files that define reports
    - Data // SQLite database file

    Here is the startup script in the app folder:

    MyBooks.sh

    #!/bin/sh
    appname=`basename $0`
    
    dirname=`dirname $PWD/MyBooks`
    tmp="${dirname#?}"
    
    if [ "${dirname%$tmp}" != "/" ]; then
    dirname=$PWD/$dirname
    fi
    LD_LIBRARY_PATH=$dirname/lib:$dirname/QtRPT/lib:$dirname/plugins
    tmpath=$dirname/bin:$dirname/lib:$dirname/QtRPT/lib:$PATH
    PATH=$tmpath
    export PATH
    export LD_LIBRARY_PATH
    export QT_DEBUG_PLUGINS=1
    exec $dirname/bin/MyBooks "$@"
    

    Debug analysis shows that all paths used are in the PATH variable and the qt.conf file in the bin folder looks like:

    qt.conf

    project                  = MyBooks2
    description          = MyBooks Library Application
    version                 = 2.5.12
    
    [Paths]
     Prefix    = /home/ken/MyBooks2/
     Binaries  = bin
     Libraries = lib:QtRPT/lib
     Plugins   = plugins
    

    The problem with this approach is that when the script runs I get a segment error. I set the QT_DEBUG_PLUGINS=1 and it reports as follows:

    $ ./MyBooks.sh
    QFactoryLoader::QFactoryLoader() checking directory path "/lib/sqldrivers" ...
    QFactoryLoader::QFactoryLoader() checking directory path "/home/ken/MyBooks2/plugins/sqldrivers" ...
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/sqldrivers/libqsqlite.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/sqldrivers/libqsqlite.so, metadata=
    {
        "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface",
        "MetaData": {
            "Keys": [
                "QSQLITE"
            ]
        },
        "archreq": 0,
        "className": "QSQLiteDriverPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("QSQLITE")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/sqldrivers/libqsqlite.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/sqldrivers/libqsqlodbc.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/sqldrivers/libqsqlodbc.so, metadata=
    {
        "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface",
        "MetaData": {
            "Keys": [
                "QODBC3",
                "QODBC"
            ]
        },
        "archreq": 0,
        "className": "QODBCDriverPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("QODBC3", "QODBC")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/sqldrivers/libqsqlodbc.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/sqldrivers/libqsqlpsql.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/sqldrivers/libqsqlpsql.so, metadata=
    {
        "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface",
        "MetaData": {
            "Keys": [
                "QPSQL7",
                "QPSQL"
            ]
        },
        "archreq": 0,
        "className": "QPSQLDriverPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("QPSQL7", "QPSQL")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/sqldrivers/libqsqlpsql.so.debug"
    "The shared library was not found." 
             not a plugin
    loaded library "/home/ken/MyBooks2/plugins/sqldrivers/libqsqlite.so"
    QFactoryLoader::QFactoryLoader() checking directory path "/lib/platforms" ...
    QFactoryLoader::QFactoryLoader() checking directory path "/home/ken/MyBooks2/plugins/platforms" ...
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqeglfs.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqeglfs.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "eglfs"
            ]
        },
        "archreq": 0,
        "className": "QEglFSIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("eglfs")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqeglfs.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqlinuxfb.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqlinuxfb.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "linuxfb"
            ]
        },
        "archreq": 0,
        "className": "QLinuxFbIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("linuxfb")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqlinuxfb.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqminimal.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqminimal.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "minimal"
            ]
        },
        "archreq": 0,
        "className": "QMinimalIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("minimal")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqminimal.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqminimalegl.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqminimalegl.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "minimalegl"
            ]
        },
        "archreq": 0,
        "className": "QMinimalEglIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("minimalegl")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqminimalegl.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqoffscreen.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqoffscreen.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "offscreen"
            ]
        },
        "archreq": 0,
        "className": "QOffscreenIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("offscreen")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqoffscreen.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqvnc.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqvnc.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "vnc"
            ]
        },
        "archreq": 0,
        "className": "QVncIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("vnc")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqvnc.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwayland-egl.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqwayland-egl.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "wayland-egl"
            ]
        },
        "archreq": 0,
        "className": "QWaylandEglPlatformIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("wayland-egl")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwayland-egl.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwayland-generic.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqwayland-generic.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "wayland"
            ]
        },
        "archreq": 0,
        "className": "QWaylandIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("wayland")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwayland-generic.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwayland-xcomposite-egl.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqwayland-xcomposite-egl.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "wayland-xcomposite-egl"
            ]
        },
        "archreq": 0,
        "className": "QWaylandXCompositeEglPlatformIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("wayland-xcomposite-egl")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwayland-xcomposite-egl.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwayland-xcomposite-glx.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqwayland-xcomposite-glx.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "wayland-xcomposite-glx"
            ]
        },
        "archreq": 0,
        "className": "QWaylandXCompositeGlxPlatformIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("wayland-xcomposite-glx")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwayland-xcomposite-glx.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwebgl.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqwebgl.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "webgl"
            ]
        },
        "archreq": 0,
        "className": "QWebGLIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("webgl")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwebgl.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqxcb.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqxcb.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "xcb"
            ]
        },
        "archreq": 0,
        "className": "QXcbIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("xcb")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqxcb.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() checking directory path "/home/ken/MyBooks2/bin/platforms" ...
    loaded library "/home/ken/MyBooks2/plugins/platforms/libqxcb.so"
    loaded library "Xcursor"
    Segmentation fault (core dumped)
    

    All the installed plugins that came with Qt show in the ldd output are in the plugins folder. All the shared libraries from Qt listed with ldd are in the lib folder. The plugin debug output tends to be very confusing for me.

    Can someone point me in the right direction? What am I missing?


  • Lifetime Qt Champion

    Use a debugger, check where it crashes. I would guess libxcb uses some incompatible libraries. On linux you normally don't distribute programs that way. You have to compile it for the specific system.



  • I am a bit confused by this response Christian.

    This application has no issues when run from QtCreator. It only presents this issue trying to run as a stand alone app in an environment where Qt is not installed.

    As can be seen in the console output with QT_DEBUG_PLUGINS=1 the debug output says it cannot load the libqxcb plugin even though it is present.

    This application was developed and compiled on Linux Mint 20 and the destination is a Linux Mint 20 computer.

    I am not sure what you are trying to say.



  • You could use ldd ./myBooks2 to check if the target system really provides all libraries. Although ldd may miss dependencies inside a plugin.
    Alternatively start the program on your dev machine and use pmap <procId> to see which so's are loaded and double check their availability on the target machine. For example libqsqlite.so is not visible for ldd (in a Qt app using SQlite) although it is loaded at runtime.


  • Lifetime Qt Champion

    @Christian-Ehrlicher said in Qt 5.15.1 - Setup for app deployment:

    I would guess libxcb uses some incompatible libraries.

    ...

    It only presents this issue trying to run as a stand alone app in an environment where Qt is not installed.

    But also there is a debugger available.



  • I guess I am not communicating well.

    stryga42 ldd was the way I decided what .so files to put in the project .lib folder. This is my first app deployed outside the development environment so I am learning as a novice here.

    Christian you will have to be a lot more forthcoming for me to understand your meaning.



  • @ad5xj said in Qt 5.15.1 - Setup for app deployment:

    As can be seen in the console output with QT_DEBUG_PLUGINS=1 the debug output says it cannot load the libqxcb plugin even though it is present.

    No, libqxcb is loaded

    loaded library "/home/ken/MyBooks2/plugins/platforms/libqxcb.so"
    
    "The shared library was not found." 
             not a plugin  => This means libqxcb.so.debug
    

    But it seems to have some problem after loading libqxcb.
    How about ldd ./plugins/platforms/libqxcb.so?



  • Bonnie

    "But it seems to have some problem after loading libqxcb.
    How about ldd ./plugins/platforms/libqxcb.so?
    "

    All plugins are present in the plugins folder as shown above. The ldd on libxcb.so shows:

    $ ldd libqxcb.so
    	linux-vdso.so.1 (0x00007ffd1a1ec000)
    	libQt5XcbQpa.so.5 => /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 (0x00007f85ea50b000)
    	libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f85ea4c4000)
    	libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f85ea405000)
    	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f85ea3e9000)
    	libQt5Gui.so.5 => /home/ken/MyBooks2/plugins/platforms/./../../lib/libQt5Gui.so.5 (0x00007f85e9ab8000)
    	libQt5DBus.so.5 => /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5 (0x00007f85e9a1c000)
    	libQt5Core.so.5 => /home/ken/MyBooks2/plugins/platforms/./../../lib/libQt5Core.so.5 (0x00007f85e9224000)
    	libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007f85e919c000)
    	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f85e9179000)
    	libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007f85e9174000)
    	libxcb-icccm.so.4 => /usr/lib/x86_64-linux-gnu/libxcb-icccm.so.4 (0x00007f85e916d000)
    	libxcb-image.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-image.so.0 (0x00007f85e8f68000)
    	libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007f85e8f61000)
    	libxcb-keysyms.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-keysyms.so.1 (0x00007f85e8f5c000)
    	libxcb-randr.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-randr.so.0 (0x00007f85e8f49000)
    	libxcb-render-util.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render-util.so.0 (0x00007f85e8f42000)
    	libxcb-render.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007f85e8f33000)
    	libxcb-shape.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shape.so.0 (0x00007f85e8f2e000)
    	libxcb-sync.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1 (0x00007f85e8f22000)
    	libxcb-xfixes.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-xfixes.so.0 (0x00007f85e8f18000)
    	libxcb-xinerama.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-xinerama.so.0 (0x00007f85e8f13000)
    	libxcb-xkb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-xkb.so.1 (0x00007f85e8ef5000)
    	libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f85e8ecb000)
    	libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f85e8eb6000)
    	libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f85e8d77000)
    	libxkbcommon-x11.so.0 => /usr/lib/x86_64-linux-gnu/libxkbcommon-x11.so.0 (0x00007f85e8d6c000)
    	libxkbcommon.so.0 => /usr/lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007f85e8d2a000)
    	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f85e8d24000)
    	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f85e8b43000)
    	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f85e89f4000)
    	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f85e89d7000)
    	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f85e87e5000)
    	libxcb-xinput.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-xinput.so.0 (0x00007f85e87c1000)
    	libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f85e85b7000)
    	libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00007f85e85ac000)
    	libICE.so.6 => /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00007f85e858e000)
    	libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f85e8463000)
    	libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f85e8435000)
    	libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f85e842c000)
    	libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f85e83f4000)
    	libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f85e83a3000)
    	libicui18n.so.56 => /home/ken/MyBooks2/plugins/platforms/./../../lib/libicui18n.so.56 (0x00007f85e7f08000)
    	libicuuc.so.56 => /home/ken/MyBooks2/plugins/platforms/./../../lib/libicuuc.so.56 (0x00007f85e7b50000)
    	libicudata.so.56 => /home/ken/MyBooks2/plugins/platforms/./../../lib/libicudata.so.56 (0x00007f85e616d000)
    	libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007f85e6168000)
    	/lib64/ld-linux-x86-64.so.2 (0x00007f85ea8c9000)
    	libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f85e60b0000)
    	libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f85e607c000)
    	libxcb-util.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-util.so.1 (0x00007f85e5e74000)
    	libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f85e5e6e000)
    	libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f85e5e66000)
    	libbsd.so.0 => /usr/lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f85e5e4c000)
    	libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f85e5dd7000)
    	libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007f85e5d28000)
    	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f85e5d1d000)
    	liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f85e5cf4000)
    	liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007f85e5cd3000)
    	libgcrypt.so.20 => /usr/lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f85e5bb3000)
    	libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f85e5b90000)
    

    I think I included the qt.conf before but here it is as it stands now exists in the app folder:

    description             = MyBooks Library Application
    version                 = 2.5.12
    
    [Paths]
     Prefix     = /home/ken/MyBooks2
     Binaries   = bin
     Libraries  = lib
     Plugins    = plugins
    

    Given this output, it does not seem to be working as expected.


  • Lifetime Qt Champion

    @ad5xj libqxcb.so is not the problem - it is loaded according to the output. The problem comes after plug-in loading - your app crashes. That's why @Christian-Ehrlicher suggested to use a debugger to see where exactly your app is crashing.



  • Let me say it again clearer. Or maybe understand you better jsulm.

    The app runs without error or crashes in the development environment in either debug or release mode.

    The problem is in a non-Qt environment. No Qt libraries installed on the target machine. The crash happens when the release executable is launched in the non-Qt environment as a deployed application. There is no debugger in that situation.

    If you mean running the application with GDB I have no idea how to do that in the deployed environment. Even if I did, I doubt it would make sense to me. The whole time I have developed it in the QtCreator IDE where everything makes sense and runs perfectly fine.

    I have never done this before so I am a complete novice when it comes to deploying a developed application to a non-Qt environment.



  • OK, I have executed the app with GDB from the script. Here is the output. It does not tell me much more than without it. So I have included it here with the hope it means something:

    /home/ken/MyBooks2/MyBooks.sh
    export CINNAMON_VERSION='4.6.7'
    export COLORTERM='truecolor'
    export DBUS_SESSION_BUS_ADDRESS='unix:path=/run/user/1000/bus'
    export DEFAULTS_PATH='/usr/share/gconf/cinnamon.default.path'
    export DESKTOP_SESSION='cinnamon'
    export DISPLAY=':0'
    export GDMSESSION='cinnamon'
    export GDM_LANG='en_US'
    export GJS_DEBUG_OUTPUT='stderr'
    export GJS_DEBUG_TOPICS='JS ERROR;JS LOG'
    export GNOME_DESKTOP_SESSION_ID='this-is-deprecated'
    export GNOME_TERMINAL_SCREEN='/org/gnome/Terminal/screen/359169f0_9fca_43bd_9b4f_549bde3c7083'
    export GNOME_TERMINAL_SERVICE=':1.370'
    export GPG_AGENT_INFO='/run/user/1000/gnupg/S.gpg-agent:0:1'
    export GTK_MODULES='gail:atk-bridge'
    export GTK_OVERLAY_SCROLLING='1'
    export HOME='/home/ken'
    export LANG='en_US.UTF-8'
    export LANGUAGE='en_US'
    export LESSCLOSE='/usr/bin/lesspipe %s %s'
    export LESSOPEN='| /usr/bin/lesspipe %s'
    export LOGNAME='ken'
    export LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:'
    export MANDATORY_PATH='/usr/share/gconf/cinnamon.mandatory.path'
    export OLDPWD='/home/ken'
    export PATH='/home/ken/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin'
    export PWD='/opt/Qt/5.15.1/gcc_64'
    export QT_ACCESSIBILITY='1'
    export QT_QPA_PLATFORMTHEME='qt5ct'
    export SESSION_MANAGER='local/ken-shack:@/tmp/.ICE-unix/6438,unix/ken-shack:/tmp/.ICE-unix/6438'
    export SHELL='/bin/bash'
    export SHLVL='1'
    export SSH_AGENT_PID='6512'
    export SSH_AUTH_SOCK='/run/user/1000/keyring/ssh'
    export TERM='xterm-256color'
    export USER='ken'
    export VTE_VERSION='6003'
    export XAUTHORITY='/home/ken/.Xauthority'
    export XDG_CONFIG_DIRS='/etc/xdg/xdg-cinnamon:/etc/xdg'
    export XDG_CURRENT_DESKTOP='X-Cinnamon'
    export XDG_DATA_DIRS='/usr/share/gnome:/usr/share/cinnamon:/home/ken/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share'
    export XDG_GREETER_DATA_DIR='/var/lib/lightdm-data/ken'
    export XDG_RUNTIME_DIR='/run/user/1000'
    export XDG_SEAT='seat0'
    export XDG_SEAT_PATH='/org/freedesktop/DisplayManager/Seat0'
    export XDG_SESSION_CLASS='user'
    export XDG_SESSION_DESKTOP='cinnamon'
    export XDG_SESSION_ID='c7'
    export XDG_SESSION_PATH='/org/freedesktop/DisplayManager/Session1'
    export XDG_SESSION_TYPE='x11'
    export XDG_VTNR='7'
    export _='/home/ken/MyBooks2/MyBooks.sh'
    GNU gdb (Ubuntu 9.2-0ubuntu1~20.04) 9.2
    Copyright (C) 2020 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    Type "show copying" and "show warranty" for details.
    This GDB was configured as "x86_64-linux-gnu".
    Type "show configuration" for configuration details.
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>.
    Find the GDB manual and other documentation resources online at:
        <http://www.gnu.org/software/gdb/documentation/>.
    
    For help, type "help".
    Type "apropos word" to search for commands related to "word"...
    Reading symbols from /home/ken/MyBooks2/bin/MyBooks...
    (No debugging symbols found in /home/ken/MyBooks2/bin/MyBooks)
    (gdb) r
    Starting program: /home/ken/MyBooks2/bin/MyBooks 
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
    QFactoryLoader::QFactoryLoader() checking directory path "/home/ken/MyBooks2/plugins/sqldrivers" ...
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/sqldrivers/libqsqlite.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/sqldrivers/libqsqlite.so, metadata=
    {
        "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface",
        "MetaData": {
            "Keys": [
                "QSQLITE"
            ]
        },
        "archreq": 0,
        "className": "QSQLiteDriverPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("QSQLITE")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/sqldrivers/libqsqlite.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/sqldrivers/libqsqlodbc.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/sqldrivers/libqsqlodbc.so, metadata=
    {
        "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface",
        "MetaData": {
            "Keys": [
                "QODBC3",
                "QODBC"
            ]
        },
        "archreq": 0,
        "className": "QODBCDriverPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("QODBC3", "QODBC")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/sqldrivers/libqsqlodbc.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/sqldrivers/libqsqlpsql.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/sqldrivers/libqsqlpsql.so, metadata=
    {
        "IID": "org.qt-project.Qt.QSqlDriverFactoryInterface",
        "MetaData": {
            "Keys": [
                "QPSQL7",
                "QPSQL"
            ]
        },
        "archreq": 0,
        "className": "QPSQLDriverPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("QPSQL7", "QPSQL")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/sqldrivers/libqsqlpsql.so.debug"
    "The shared library was not found." 
             not a plugin
    loaded library "/home/ken/MyBooks2/plugins/sqldrivers/libqsqlite.so"
    QFactoryLoader::QFactoryLoader() checking directory path "/home/ken/MyBooks2/plugins/platforms" ...
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqeglfs.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqeglfs.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "eglfs"
            ]
        },
        "archreq": 0,
        "className": "QEglFSIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("eglfs")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqeglfs.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqlinuxfb.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqlinuxfb.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "linuxfb"
            ]
        },
        "archreq": 0,
        "className": "QLinuxFbIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("linuxfb")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqlinuxfb.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqminimal.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqminimal.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "minimal"
            ]
        },
        "archreq": 0,
        "className": "QMinimalIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("minimal")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqminimal.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqminimalegl.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqminimalegl.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "minimalegl"
            ]
        },
        "archreq": 0,
        "className": "QMinimalEglIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("minimalegl")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqminimalegl.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqoffscreen.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqoffscreen.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "offscreen"
            ]
        },
        "archreq": 0,
        "className": "QOffscreenIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("offscreen")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqoffscreen.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqvnc.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqvnc.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "vnc"
            ]
        },
        "archreq": 0,
        "className": "QVncIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("vnc")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqvnc.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwayland-egl.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqwayland-egl.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "wayland-egl"
            ]
        },
        "archreq": 0,
        "className": "QWaylandEglPlatformIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("wayland-egl")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwayland-egl.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwayland-generic.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqwayland-generic.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "wayland"
            ]
        },
        "archreq": 0,
        "className": "QWaylandIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("wayland")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwayland-generic.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwayland-xcomposite-egl.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqwayland-xcomposite-egl.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "wayland-xcomposite-egl"
            ]
        },
        "archreq": 0,
        "className": "QWaylandXCompositeEglPlatformIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("wayland-xcomposite-egl")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwayland-xcomposite-egl.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwayland-xcomposite-glx.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqwayland-xcomposite-glx.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "wayland-xcomposite-glx"
            ]
        },
        "archreq": 0,
        "className": "QWaylandXCompositeGlxPlatformIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("wayland-xcomposite-glx")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwayland-xcomposite-glx.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwebgl.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqwebgl.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "webgl"
            ]
        },
        "archreq": 0,
        "className": "QWebGLIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("webgl")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqwebgl.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqxcb.so"
    Found metadata in lib /home/ken/MyBooks2/plugins/platforms/libqxcb.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "xcb"
            ]
        },
        "archreq": 0,
        "className": "QXcbIntegrationPlugin",
        "debug": false,
        "version": 331520
    }
    
    
    Got keys from plugin meta data ("xcb")
    QFactoryLoader::QFactoryLoader() looking at "/home/ken/MyBooks2/plugins/platforms/libqxcb.so.debug"
    "The shared library was not found." 
             not a plugin
    QFactoryLoader::QFactoryLoader() checking directory path "/home/ken/MyBooks2/bin/platforms" ...
    loaded library "/home/ken/MyBooks2/plugins/platforms/libqxcb.so"
    [New Thread 0x7ffff1099700 (LWP 29450)]
    loaded library "Xcursor"
    
    Thread 1 "MyBooks" received signal SIGSEGV, Segmentation fault.
    0x00007ffff1cef7a8 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
    


  • Hi it looks like your app picks up the dll libQt5XcbQpa.so.5 not from the Qt version in /home/ken/MyBooks2 but rather from the Qt version installed in /usr/lib/x86_64-linux-gnu/ (and after that it crashes)
    Perhaps the Qt version in /usr/lib/x86_64-linux-gnu/ is not the same as the version in /home/ken/MyBooks2?
    Also, please check that you have a libQt5XcbQpa.so.5 in the home/ken/MyBooks2/lib directory.



  • @hskoglund
    I think this is the root source of this problem. The same happens with libQt5DBus.so.5 => /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5. Mixing Qt libraries from different installations is never a good idea. Without going into details: Make sure that all Qt Libraries loaded by a process come from the identical installation. The "...so.5" tells you that it is a Qt5 library but that does not guarantee binary compatibility - at least to my experience. So please make sure that all Qt libraries are loaded from /home/ken/MyBooks2 and none from /usr/lib/x86_64-linux-gnu/ or other system directories.


Log in to reply