Can't find libQt5Core lib



  • @koahnig this in on embedded device.
    Qt libs and Qt App was cross-compiled with arm-linux-gnueabihf
    I removed all qt files from /usr/lib/arm-linux-gnueabihf/ on embedded device and now I've got:

    error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory
    

    I tried to place Qt libraries to the current work directory, I tried to create launcher (like described here http://doc.qt.io/archives/qt-4.8/deployment-x11.html). All without success, libQt5Core can't be found

    Also on I published on the github my script which do a cross-compilation of qtbase.


  • Lifetime Qt Champion

    Hi,

    Unless you modified the rpath of your application, putting your application dependencies in the same folder won't have any effect. You can use the LD_LIBRARY_PATH environment variable to give additional paths to the loader to search in when starting your application.



  • @SGaist thanks for answer. Yes, I did set LD_LIBRARY_PATH to needed value.
    So, I recompiled my application, did copy of needed libs to embedded device and setted LD_LIBRARY_PATH.
    Now I have another exception:

    /ta512/./ta: error while loading shared libraries: /home/imx6/Desktop/qt5120/sysroot/usr/lib/libz.so: cannot open shared object file: No such file or directory
    

    This is path on my host-machine, but not in the current embedded device.
    The path to libz in my embedded device is /ta512/lib/libz.so and it already defined in LD_LIBRARY_PATH.
    Why application remembered a full path to libz from my host-machine and doesn't looks in LD_LIBRARY_PATH?
    (directly my application doen't uses libz, which requires by glib, which requires by Qt)


  • Lifetime Qt Champion

    You should run ldd (with LD_LIBRARY_PATH defined) on your application and its dependencies to see where it's currently looking for them.



  • @SGaist

    # export LD_LIBRARY_PATH=/ta512/glib:/ta512/qt5lib
    # /ta512/ta   
    /ta512/ta: error while loading shared libraries: /home/imx6/Desktop/qt5120/sysroot/usr/lib/libz.so: cannot open shared object file: No such file or directory
    # ldd /ta512/ta
    /ta512/ta: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: version `Qt_5' not found (required by /ta512/ta)
    /ta512/ta: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: version `Qt_5_PRIVATE_API' not found (required by /ta512/qt5lib/libQt5Widgets.so.5)
    /ta512/ta: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: version `Qt_5' not found (required by /ta512/qt5lib/libQt5Widgets.so.5)
    /ta512/ta: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: version `Qt_5_PRIVATE_API' not found (required by /ta512/qt5lib/libQt5Gui.so.5)
    /ta512/ta: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: version `Qt_5' not found (required by /ta512/qt5lib/libQt5Gui.so.5)
    /ta512/ta: /ta512/glib/libstdc++.so.6: no version information available (required by /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5)
    /ta512/ta: /ta512/glib/libstdc++.so.6: no version information available (required by /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5)
    /ta512/ta: /ta512/glib/libstdc++.so.6: no version information available (required by /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5)
    /ta512/ta: /ta512/glib/libstdc++.so.6: no version information available (required by /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5)
    /ta512/ta: /ta512/glib/libstdc++.so.6: no version information available (required by /usr/lib/arm-linux-gnueabihf/libicui18n.so.55)
    /ta512/ta: /ta512/glib/libstdc++.so.6: no version information available (required by /usr/lib/arm-linux-gnueabihf/libicui18n.so.55)
    /ta512/ta: /ta512/glib/libstdc++.so.6: no version information available (required by /usr/lib/arm-linux-gnueabihf/libicui18n.so.55)
    /ta512/ta: /ta512/glib/libstdc++.so.6: no version information available (required by /usr/lib/arm-linux-gnueabihf/libicuuc.so.55)
    /ta512/ta: /ta512/glib/libstdc++.so.6: no version information available (required by /usr/lib/arm-linux-gnueabihf/libicuuc.so.55)
    /ta512/ta: /ta512/glib/libstdc++.so.6: no version information available (required by /usr/lib/arm-linux-gnueabihf/libicuuc.so.55)
    /ta512/ta: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.28' not found (required by /ta512/glib/libglib-2.0.so.0)
    	linux-vdso.so.1 =>  (0x7ee3e000)
    	libQt5Widgets.so.5 => /ta512/qt5lib/libQt5Widgets.so.5 (0x76a51000)
    	libQt5Gui.so.5 => /ta512/qt5lib/libQt5Gui.so.5 (0x765b0000)
    	libQt5Core.so.5 => /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5 (0x7624b000)
    	libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x76227000)
    	libstdc++.so.6 => /ta512/glib/libstdc++.so.6 (0x760be000)
    	libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x76045000)
    	libgcc_s.so.1 => /ta512/glib/libgcc_s.so.1 (0x76016000)
    	libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x75f2a000)
    	/home/imx6/Desktop/qt5120/sysroot/usr/lib/libz.so => not found
    	libz.so.1 => /ta512/glib/libz.so.1 (0x75efa000)
    	libicui18n.so.55 => /usr/lib/arm-linux-gnueabihf/libicui18n.so.55 (0x75d60000)
    	libicuuc.so.55 => /usr/lib/arm-linux-gnueabihf/libicuuc.so.55 (0x75c42000)
    	libpcre16.so.3 => /usr/lib/arm-linux-gnueabihf/libpcre16.so.3 (0x75bec000)
    	libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x75bd9000)
    	libglib-2.0.so.0 => /ta512/glib/libglib-2.0.so.0 (0x75a43000)
    	librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0x75a2c000)
    	/lib/ld-linux-armhf.so.3 (0x54ae3000)
    	libicudata.so.55 => /usr/lib/arm-linux-gnueabihf/libicudata.so.55 (0x74165000)
    


  • @SGaist ok, I recompiled qtbase without glib, and now I return to the topic theme:

    # ls /ta512
    Makefile         libQt5Widgets.so.5  moc_mainwindow.cpp  ta
    libQt5Core.so.5  main.o              moc_mainwindow.o    ta.sh
    libQt5Gui.so.5   mainwindow.o        moc_predefs.h       ui_mainwindow.h
    

    and run:

    # export LD_LIBRARY_PATH=/ta512
    # ./ta
    ./ta: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: version 'Qt_5' not found (required by ./ta)
    ./ta: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: version 'Qt_5_PRIVATE_API' not found (required by /ta512/libQt5Widgets.so.5)
    ./ta: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: version 'Qt_5' not found (required by /ta512/libQt5Widgets.so.5)
    ./ta: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: version 'Qt_5_PRIVATE_API' not found (required by /ta512/libQt5Gui.so.5)
    ./ta: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: version 'Qt_5' not found (required by /ta512/libQt5Gui.so.5)
    # ldd ta
    ./ta: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: version 'Qt_5' not found (required by ./ta)
    ./ta: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: version 'Qt_5_PRIVATE_API' not found (required by /ta512/libQt5Widgets.so.5)
    ./ta: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: version 'Qt_5' not found (required by /ta512/libQt5Widgets.so.5)
    ./ta: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: version 'Qt_5_PRIVATE_API' not found (required by /ta512/libQt5Gui.so.5)
    ./ta: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: version 'Qt_5' not found (required by /ta512/libQt5Gui.so.5)
    	linux-vdso.so.1 =>  (0x7ece4000)
    	libQt5Widgets.so.5 => /ta512/libQt5Widgets.so.5 (0x769e1000)
    	libQt5Gui.so.5 => /ta512/libQt5Gui.so.5 (0x76540000)
    	libQt5Core.so.5 => /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5 (0x761db000)
    	libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x761b7000)
    	libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0x760a9000)
    	libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x76031000)
    	libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0x76008000)
    	libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x75f1c000)
    	libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0x75efa000)
    	libicui18n.so.55 => /usr/lib/arm-linux-gnueabihf/libicui18n.so.55 (0x75d61000)
    	libicuuc.so.55 => /usr/lib/arm-linux-gnueabihf/libicuuc.so.55 (0x75c43000)
    	libpcre16.so.3 => /usr/lib/arm-linux-gnueabihf/libpcre16.so.3 (0x75bec000)
    	libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x75bd9000)
    	libglib-2.0.so.0 => /lib/arm-linux-gnueabihf/libglib-2.0.so.0 (0x75b01000)
    	librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0x75aeb000)
    	/lib/ld-linux-armhf.so.3 (0x54b87000)
    	libicudata.so.55 => /usr/lib/arm-linux-gnueabihf/libicudata.so.55 (0x74224000)
    	libpcre.so.3 => /lib/arm-linux-gnueabihf/libpcre.so.3 (0x741c6000)
    

  • Lifetime Qt Champion

    You are not deploying libQt5Core.so.5 along the other Qt libraries in your ta512 folder.



  • @SGaist no, I'm deploying only 3 Qt libs in folder /ta512



  • @SGaist ok, I built Qt 5.9.7 with options:

        -verbose                        \
        -nomake tests                   \
        -nomake examples                \
        -no-use-gold-linker             \
        -no-opengl                      \
        -no-dbus                        \
        -no-glib                        \
        -no-icu                         \
        -rpath
    

    and the target Qt application on the embedded device did found the Qt libs, but I've got another exception:

    ./qt_c: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.28' not found (required by /ta/libQt5Core.so.5)
    

    sure, version of glib on the target device is 2.23, but Qt was configured without GLIB support. Why Qt still require this library?


    well, as latest results with same cross-compilations process (e.g. same tools, compiler, QtCreator settings, etc):

    • cross-compiled app with Qt 5.12.0 can't find self Qt libraries
    • cross-compiled app with Qt 5.9.7 can find self Qt libraries, but can't work without GLIB < v2.28 (even configured without glib support)

  • Lifetime Qt Champion

    And why are you not deploying the Qt5Core library since you already deploy the others ?



  • @SGaist as I told before I did copy Qt libs with application to the target embedded device (as you can see the folder /ta512 already contains all needed Qt libs and executable application), also I did set value of LD_LIBRARY_PATH to /ta512 before application has been started.


  • Lifetime Qt Champion

    That's clear, but from your last test, why only these three libs and not QtCore ?



  • @SGaist sorry, maybe I don't understand you question right. Does libQt5Core.so.5 (which was already deployed with application to the target device) is not "Qt5Core library"?


  • Lifetime Qt Champion

    The question is: since you are deploying 3 Qt libraries already, why not the Qt5Core ?



  • @SGaist Sorry, but what do you mean under "Qt5Core"? "libQt5Core.so" is a "Qt5Core", isn't it?


  • Lifetime Qt Champion

    Yes it is.



  • @SGaist because the target application is looking for the libQt5Core.so.5, not for libQt5Core.so

    howewer I'll try to do copy of all aliases: libQt5Core.so, libQt5Core.so.5 and libQt5Core.so.5.12.0

    thanks for hint!
    and happy New Year ;)


  • Lifetime Qt Champion

    If you want to be sure the loader finds the correct library where you put them, then yes, copy all the aliases up to the library itself.



  • @SGaist I did copy for each needed alias, but nothing changes:

    # export LD_LIBRARY_PATH=/ta_20190102115904/qt5lib
    # ls $LD_LIBRARY_PATH
    libQt5Core.so         libQt5Gui.so         libQt5Widgets.so
    libQt5Core.so.5       libQt5Gui.so.5       libQt5Widgets.so.5
    libQt5Core.so.5.12.0  libQt5Gui.so.5.12.0  libQt5Widgets.so.5.12.0
    # cd /ta_20190102115904
    # ./qt_c
    ./qt_c: /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5: version `Qt_5' not found (required by ./qt_c)
    

    Ok, I did remove system version:

    # mv /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5 /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5.orig
    # mv /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5.5 /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5.5.orig
    # mv /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5.5.1 /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5.5.1.orig
    # ./qt_c
    ./qt_c: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory
    

    (there is no alias /usr/lib/arm-linux-gnueabihf/libQt5Core.so)
    All binaries have a right arch, I think:

    # file qt5lib/libQt5Core.so
    qt5lib/libQt5Core.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (GNU/Linux), dynamically linked, for GNU/Linux 4.11.0, not stripped
    # file qt5lib/libQt5Core.so.5
    qt5lib/libQt5Core.so.5: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (GNU/Linux), dynamically linked, for GNU/Linux 4.11.0, not stripped
    # file qt5lib/libQt5Core.so.5.12.0
    qt5lib/libQt5Core.so.5.12.0: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (GNU/Linux), dynamically linked, for GNU/Linux 4.11.0, not stripped
    # file qt_c
    qt_c: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, not stripped
    

    cross compiled Qt application don't want to use cross-compiled Qt libraries.
    I don't understand what's wrong :(

    I'll try to use a previous version of the toolchain



  • Looks like older compiler solved this topic.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.