Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Installation and Deployment
  4. [Link error]Cross-Compiling QT 5.14.2 To RPi4 failed.
QtWS25 Last Chance

[Link error]Cross-Compiling QT 5.14.2 To RPi4 failed.

Scheduled Pinned Locked Moved Unsolved Installation and Deployment
3 Posts 2 Posters 1.1k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Offline
    L Offline
    Lak4CYUT
    wrote on last edited by Lak4CYUT
    #1

    Hi Everyone,
    I want to develop QT app on RPi4 and I hope I can use the ssh to develop and test my app.
    According this guide https://wiki.qt.io/RaspberryPi2EGLFS and the comment on https://code.qt.io/cgit/qt/qtbase.git/tree/mkspecs/devices/linux-rasp-pi4-v3d-g++/qmake.conf?h=5.14.2.
    My host is ubuntu 19.10.
    The cross compiler is installed by APT.

    cpp-9-arm-linux-gnueabihf/eoan,now 9.2.1-9ubuntu2cross1 amd64 [installed,automatic]
    g++-9-arm-linux-gnueabihf/eoan,now 9.2.1-9ubuntu2cross1 amd64 [installed,automatic]
    gcc-9-arm-linux-gnueabihf-base/eoan,now 9.2.1-9ubuntu2cross1 amd64 [installed,automatic]
    gcc-9-arm-linux-gnueabihf/eoan,now 9.2.1-9ubuntu2cross1 amd64 [installed,automatic]
    

    I write the configuration command below,

    ./configure -release -opengl es2 -device linux-rasp-pi4-v3d-g++ -device-option CROSS_COMPILE=arm-linux-gnueabihf- -sysroot /home/lake/Qt/raspi/sysroot -opensource -confirm-license -make libs -prefix /usr/local/qt5pi -extprefix /home/lake/Qt/raspi/qt5pi -v -no-use-gold-linker
    

    But I cannot link succeed, it always throw the error like the following,

    make[3]: Entering directory `/home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/tools/qmltime'
    arm-linux-gnueabihf-g++ -mfloat-abi=hard --sysroot=/home/lake/Qt/raspi/sysroot -Wl,-O1 -Wl,--enable-new-dtags -Wl,-rpath,/usr/local/qt5pi/lib -Wl,-rpath-link,/home/lake/Qt/raspi/sysroot/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/home/lake/Qt/raspi/sysroot/lib/arm-linux-gnueabihf -o qmltime .obj/qmltime.o   /home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/lib/libQt5Quick.so /home/lake/Qt/qt-everywhere-src-5.14.1/qtbase/lib/libQt5Gui.so /home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/lib/libQt5QmlModels.so /home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/lib/libQt5Qml.so /home/lake/Qt/qt-everywhere-src-5.14.1/qtbase/lib/libQt5Network.so /home/lake/Qt/qt-everywhere-src-5.14.1/qtbase/lib/libQt5Core.so -L/home/lake/Qt/raspi/sysroot/usr/lib/arm-linux-gnueabihf -lGLESv2 -lpthread   
    /usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/bin/ld: /home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/lib/libQt5Qml.so: undefined reference to `log2@GLIBC_2.29'
    /usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/bin/ld: /home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/lib/libQt5Qml.so: undefined reference to `pow@GLIBC_2.29'
    /usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/bin/ld: /home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/lib/libQt5Qml.so: undefined reference to `exp@GLIBC_2.29'
    /usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/bin/ld: /home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/lib/libQt5Qml.so: undefined reference to `log@GLIBC_2.29'
    collect2: error: ld returned 1 exit status
    make[3]: *** [qmltime] Error 1
    make[3]: Leaving directory `/home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/tools/qmltime'
    make[2]: *** [sub-qmltime-make_first] Error 2
    make[2]: Leaving directory `/home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/tools'
    make[1]: *** [sub-tools-make_first] Error 2
    make[1]: Leaving directory `/home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative'
    make: *** [module-qtdeclarative-make_first] Error 2
    

    It seems libQt5Qml.so is built by host libc (2.30), but when another library that link to libQt5Qml, it will go to use the libc from sysroot (or rpath?), but Raspberry Pi is only support to 2.28 so far.

    Package: libc6
    Version: 2.28-10+rpi1
    Priority: optional
    Section: libs
    Source: glibc
    Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
    Installed-Size: 9,198 kB
    Depends: libgcc1
    Recommends: libidn2-0 (>= 2.0.5~)
    Suggests: glibc-doc, debconf | debconf-2.0, libc-l10n, locales
    Conflicts: openrc (<< 0.27-2~)
    Breaks: hurd (<< 1:0.5.git20140203-1), libtirpc1 (<< 0.2.3), locales (<< 2.28), locales-all (<< 2.28), nocache (<< 1.1-1~), nscd (<< 2.28), r-cran-later (<< 0.7.5+dfsg-2)
    

    Could anyone help me or give me some suggestion? This problem is stuck me over 4 day....
    Thanks a lot.

    L 1 Reply Last reply
    0
    • L Lak4CYUT

      Hi Everyone,
      I want to develop QT app on RPi4 and I hope I can use the ssh to develop and test my app.
      According this guide https://wiki.qt.io/RaspberryPi2EGLFS and the comment on https://code.qt.io/cgit/qt/qtbase.git/tree/mkspecs/devices/linux-rasp-pi4-v3d-g++/qmake.conf?h=5.14.2.
      My host is ubuntu 19.10.
      The cross compiler is installed by APT.

      cpp-9-arm-linux-gnueabihf/eoan,now 9.2.1-9ubuntu2cross1 amd64 [installed,automatic]
      g++-9-arm-linux-gnueabihf/eoan,now 9.2.1-9ubuntu2cross1 amd64 [installed,automatic]
      gcc-9-arm-linux-gnueabihf-base/eoan,now 9.2.1-9ubuntu2cross1 amd64 [installed,automatic]
      gcc-9-arm-linux-gnueabihf/eoan,now 9.2.1-9ubuntu2cross1 amd64 [installed,automatic]
      

      I write the configuration command below,

      ./configure -release -opengl es2 -device linux-rasp-pi4-v3d-g++ -device-option CROSS_COMPILE=arm-linux-gnueabihf- -sysroot /home/lake/Qt/raspi/sysroot -opensource -confirm-license -make libs -prefix /usr/local/qt5pi -extprefix /home/lake/Qt/raspi/qt5pi -v -no-use-gold-linker
      

      But I cannot link succeed, it always throw the error like the following,

      make[3]: Entering directory `/home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/tools/qmltime'
      arm-linux-gnueabihf-g++ -mfloat-abi=hard --sysroot=/home/lake/Qt/raspi/sysroot -Wl,-O1 -Wl,--enable-new-dtags -Wl,-rpath,/usr/local/qt5pi/lib -Wl,-rpath-link,/home/lake/Qt/raspi/sysroot/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/home/lake/Qt/raspi/sysroot/lib/arm-linux-gnueabihf -o qmltime .obj/qmltime.o   /home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/lib/libQt5Quick.so /home/lake/Qt/qt-everywhere-src-5.14.1/qtbase/lib/libQt5Gui.so /home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/lib/libQt5QmlModels.so /home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/lib/libQt5Qml.so /home/lake/Qt/qt-everywhere-src-5.14.1/qtbase/lib/libQt5Network.so /home/lake/Qt/qt-everywhere-src-5.14.1/qtbase/lib/libQt5Core.so -L/home/lake/Qt/raspi/sysroot/usr/lib/arm-linux-gnueabihf -lGLESv2 -lpthread   
      /usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/bin/ld: /home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/lib/libQt5Qml.so: undefined reference to `log2@GLIBC_2.29'
      /usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/bin/ld: /home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/lib/libQt5Qml.so: undefined reference to `pow@GLIBC_2.29'
      /usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/bin/ld: /home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/lib/libQt5Qml.so: undefined reference to `exp@GLIBC_2.29'
      /usr/lib/gcc-cross/arm-linux-gnueabihf/9/../../../../arm-linux-gnueabihf/bin/ld: /home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/lib/libQt5Qml.so: undefined reference to `log@GLIBC_2.29'
      collect2: error: ld returned 1 exit status
      make[3]: *** [qmltime] Error 1
      make[3]: Leaving directory `/home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/tools/qmltime'
      make[2]: *** [sub-qmltime-make_first] Error 2
      make[2]: Leaving directory `/home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/tools'
      make[1]: *** [sub-tools-make_first] Error 2
      make[1]: Leaving directory `/home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative'
      make: *** [module-qtdeclarative-make_first] Error 2
      

      It seems libQt5Qml.so is built by host libc (2.30), but when another library that link to libQt5Qml, it will go to use the libc from sysroot (or rpath?), but Raspberry Pi is only support to 2.28 so far.

      Package: libc6
      Version: 2.28-10+rpi1
      Priority: optional
      Section: libs
      Source: glibc
      Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
      Installed-Size: 9,198 kB
      Depends: libgcc1
      Recommends: libidn2-0 (>= 2.0.5~)
      Suggests: glibc-doc, debconf | debconf-2.0, libc-l10n, locales
      Conflicts: openrc (<< 0.27-2~)
      Breaks: hurd (<< 1:0.5.git20140203-1), libtirpc1 (<< 0.2.3), locales (<< 2.28), locales-all (<< 2.28), nocache (<< 1.1-1~), nscd (<< 2.28), r-cran-later (<< 0.7.5+dfsg-2)
      

      Could anyone help me or give me some suggestion? This problem is stuck me over 4 day....
      Thanks a lot.

      L Offline
      L Offline
      Lak4CYUT
      wrote on last edited by Lak4CYUT
      #2

      I guess the problem is caused by that libQt5Qml.so be linked to host's libc (libstdc++ -> libm), but when other projects link to libQt5Qml.so, linker will go to reference --sysroot or -rpath specified path, and found the remote libc.
      I don't know why, does anyone have any idea?? Thanks.

      1 Reply Last reply
      0
      • D Offline
        D Offline
        dare
        wrote on last edited by
        #3

        I have the same problem with libQt5Qml.so. My host is Linux Ubuntu 20.04, Raspberry Pi 4. I try cross-compile Qt version 5.15.1. Have you dealt with this ?

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved