Important: Please read the Qt Code of Conduct -

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

  • 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 and the comment on
    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/ /home/lake/Qt/qt-everywhere-src-5.14.1/qtbase/lib/ /home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/lib/ /home/lake/Qt/qt-everywhere-src-5.14.1/qtdeclarative/lib/ /home/lake/Qt/qt-everywhere-src-5.14.1/qtbase/lib/ /home/lake/Qt/qt-everywhere-src-5.14.1/qtbase/lib/ -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/ 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/ 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/ 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/ 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 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 <>
    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.

  • I guess the problem is caused by that be linked to host's libc (libstdc++ -> libm), but when other projects link to, 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.

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

Log in to reply