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

Cross-compiling Qt Embedded for Raspberry (Pi 4 model B)



  • hello,
    I'm trying to compile "Qt Embedded for Raspberry" on Windows 10.
    I follow this guide: https://visualgdb.com/tutorials/raspberry/qt/embedded/ I have not found anything more recent.
    Windows Tools compilation fails.
    Thanks for your help.

    $ ../configure -platform win32-g++ -release -opengl es2 -device linux-rasp-pi2-g++ -sysroot C:/SysGCC/Raspberry/arm-linux-gnueabihf/sysroot -prefix /usr/local/qt5

    • cd qtbase
    • /D/Download/Qt/qt-everywhere-src-5.14.1/qtbase/configure -top-level -platform win32-g++ -release -opengl es2 -device linux-rasp-pi2-g++ -sysroot C:/SysGCC/Raspberry/arm-linux-gnueabihf/sysroot -prefix /usr/local/qt5
      Preparing build tree...
      Creating qmake...
      ................................................................................................Done.
      Info: creating super cache file D:\Download\Qt\qt-everywhere-src-5.14.1\qt-build.qmake.super
      Info: creating cache file D:\Download\Qt\qt-everywhere-src-5.14.1\qt-build.qmake.cache
      Info: creating stash file D:\Download\Qt\qt-everywhere-src-5.14.1\qt-build.qmake.stash
      Project ERROR: Cannot run target compiler 'g++'. Output:
      ===================
      g++: error: unrecognized argument in option '-mabi=aapcs-linux'
      g++: note: valid arguments to '-mabi=' are: ms sysv
      Using built-in specs.
      COLLECT_GCC=g++
      g++: error: unrecognized command line option '-marm'; did you mean '-mabm'?
      g++: error: unrecognized command line option '-mthumb-interwork'
      g++: error: unrecognized command line option '-mfpu=neon-vfpv4'
      g++: error: unrecognized command line option '-mfloat-abi=hard'
      Target: i686-w64-mingw32
      Configured with: ../gcc-9.1.0/configure --prefix=/mingw32 --with-local-prefix=/mingw32/local --build=i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 --with-native-system-header-dir=/mingw32/i686-w64-mingw32/include --libexecdir=/mingw32/lib --enable-bootstrap --with-arch=i686 --with-tune=generic --enable-languages=c,lto,c++,fortran,ada,objc,obj-c++ --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-filesystem-ts=yes --enable-libstdcxx-time=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --disable-isl-version-check --enable-lto --enable-libgomp --disable-multilib --enable-checking=release --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --enable-plugin --with-libiconv --with-system-zlib --with-gmp=/mingw32 --with-mpfr=/mingw32 --with-mpc=/mingw32 --with-isl=/mingw32 --with-pkgversion='Rev3, Built by MSYS2 project' --with-bugurl=https://sourceforge.net/projects/msys2 --with-gnu-as --with-gnu-ld --disable-sjlj-exceptions --with-dwarf2
      Thread model: posix
      gcc version 9.1.0 (Rev3, Built by MSYS2 project)
      ===================
      Maybe you forgot to setup the environment?

  • Qt Champions 2019

    @Gio26 The one containing Qt libs


  • Moderators

    That guide is grossly outdated, do not use it! Or at least modify it to get a chance of success. But really, it has fixes for issues which have long ago been fixed in Qt itself (so there is no need to do them).

    -device linux-rasp-pi2-g++

    You are not compiling for RPi2. Pick a device with "pi4" in it's name (there are 2 to choose from, depending on chosen GPU driver).

    gcc version 9.1.0 (Rev3, Built by MSYS2 project)

    Is this a cross-compiler? From the output it looks like this is x86_64 compiler, not good for cross-compiling to ARM.



  • @sierdzio said in Cross-compiling Qt Embedded for Raspberry (Pi 4 model B):

    That guide is grossly outdated, do not use it! Or at least modify it to get a chance of success. But really, it has fixes for issues which have long ago been fixed in Qt itself (so there is no need to do them).

    Thanks for your answer.
    I found this new guide: https://forum.qt.io/topic/68381/cross-compile-qt-windows-to-raspberry-3/2. I have reviewed and updated the software but still have compilation errors.
    $ ../configure -platform win32-g++ -release -opengl es2 -device linux-rasp-pi3-vc4-g++ -sysroot C:/SysGCC/Raspberry/arm-linux-gnueabihf/sysroot -prefix /usr/local/qt5 -opensource -confirm-license

    • cd qtbase
    • /D/Download/Qt/qt-everywhere-src-5.14.1/qtbase/configure -top-level -platform win32-g++ -release -opengl es2 -device linux-rasp-pi3-vc4-g++ -sysroot C:/SysGCC/Raspberry/arm-linux-gnueabihf/sysroot -prefix /usr/local/qt5 -opensource -confirm-license
      Preparing build tree...
      Creating qmake...
      ................................................................................................Done.
      Info: creating super cache file D:\Download\Qt\qt-everywhere-src-5.14.1\qt-build.qmake.super
      Info: creating cache file D:\Download\Qt\qt-everywhere-src-5.14.1\qt-build.qmake.cache
      Info: creating stash file D:\Download\Qt\qt-everywhere-src-5.14.1\qt-build.qmake.stash
      Project ERROR: Cannot run target compiler 'g++'. Output:
      ===================
      Using built-in specs.
      COLLECT_GCC=g++
      g++: error: unrecognized command line option '-mfpu=crypto-neon-fp-armv8'
      g++: error: unrecognized command line option '-mfloat-abi=hard'
      Target: x86_64-w64-mingw32
      Configured with: ../gcc-9.1.0/configure --prefix=/mingw64 --with-local-prefix=/mingw64/local --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --with-native-system-header-dir=/mingw64/x86_64-w64-mingw32/include --libexecdir=/mingw64/lib --enable-bootstrap --with-arch=x86-64 --with-tune=generic --enable-languages=c,lto,c++,fortran,ada,objc,obj-c++ --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-filesystem-ts=yes --enable-libstdcxx-time=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --disable-isl-version-check --enable-lto --enable-libgomp --disable-multilib --enable-checking=release --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --enable-plugin --with-libiconv --with-system-zlib --with-gmp=/mingw64 --with-mpfr=/mingw64 --with-mpc=/mingw64 --with-isl=/mingw64 --with-pkgversion='Rev3, Built by MSYS2 project' --with-bugurl=https://sourceforge.net/projects/msys2 --with-gnu-as --with-gnu-ld
      Thread model: posix
      gcc version 9.1.0 (Rev3, Built by MSYS2 project)
      ===================
      Maybe you forgot to setup the environment?


  • In the end after a tough battle I got the compilation !!!
    However, I find two directories and not one as I imagined: I have the one indicated by me "qt5" and another "Qt-5.14.1".
    Which one should I upload on the raspberry?
    Thanks


  • Qt Champions 2019

    @Gio26 The one containing Qt libs



  • @jsulm
    Thanks!!!



  • Again me!!! :)
    I'm trying some examples and some is fine like "hellogl2" many others no!!!!
    The error: "qt.qpa.egldeviceintegration: Failed to load EGL device integration" eglfs_kms ".
    I can't compile kms because drm failed, it doesn't find "drm.h" which is however present in "sysroot/usr/include/drm".
    Could this be the problem or I need to see anything else?
    Thanks a lot for your help.


Log in to reply