Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Installing Cross-Compile environment for Raspberry Pi with Qt 5.7

Installing Cross-Compile environment for Raspberry Pi with Qt 5.7

Scheduled Pinned Locked Moved Solved General and Desktop
8 Posts 3 Posters 2.9k 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.
  • V Offline
    V Offline
    Vulpecula
    wrote on last edited by Vulpecula
    #1

    I have a working cross-compile enviroment for developing for my Raspberry Pi with Qt. But I decided to make a new enviroment with Minibian. This image is much smaller, it saves me more then 5 gb. I have followed the whole tutorial on https://wiki.qt.io/RaspberryPi2EGLFS with the only exception that I cloned the 5.7 version instead of 5.6. But when I look at the compile summary of qtbase, one thing caught my eye, and that is EGLFS Raspberry Pi shows no. I expected that it would show yes.

    EGLFS ................ yes
          EGLFS i.MX6 ........ no
          EGLFS i.MX6 Wayland. no
          EGLFS EGLDevice .... yes
          EGLFS GBM .......... yes
          EGLFS Mali ......... no
          EGLFS Raspberry Pi . no
          EGLFS X11 .......... yes
    

    Can someone tell me how I can compile qtbase with that option to yes?

    Edit: I think this is not the right forumboard to ask. Can this topic be moved to the board "Installation and Deployment"

    jsulmJ 1 Reply Last reply
    0
    • V Vulpecula

      I have a working cross-compile enviroment for developing for my Raspberry Pi with Qt. But I decided to make a new enviroment with Minibian. This image is much smaller, it saves me more then 5 gb. I have followed the whole tutorial on https://wiki.qt.io/RaspberryPi2EGLFS with the only exception that I cloned the 5.7 version instead of 5.6. But when I look at the compile summary of qtbase, one thing caught my eye, and that is EGLFS Raspberry Pi shows no. I expected that it would show yes.

      EGLFS ................ yes
            EGLFS i.MX6 ........ no
            EGLFS i.MX6 Wayland. no
            EGLFS EGLDevice .... yes
            EGLFS GBM .......... yes
            EGLFS Mali ......... no
            EGLFS Raspberry Pi . no
            EGLFS X11 .......... yes
      

      Can someone tell me how I can compile qtbase with that option to yes?

      Edit: I think this is not the right forumboard to ask. Can this topic be moved to the board "Installation and Deployment"

      jsulmJ Online
      jsulmJ Online
      jsulm
      Lifetime Qt Champion
      wrote on last edited by
      #2

      @Vulpecula To know why something is not enabled you should check the output of configure command. Usually it is due missing header files or libraries. So check the configure output.
      How did you call configure?

      https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • V Offline
        V Offline
        Vulpecula
        wrote on last edited by
        #3

        I used the method descripted on the wiki.

        ./configure -release -opengl es2 -device linux-rasp-pi2-g++ \
        -device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- \
        -sysroot ~/raspi/sysroot -opensource -confirm-license -make libs \
        -prefix /usr/local/qt5pi -extprefix ~/raspi/qt5pi -hostprefix ~/raspi/qt5 -v
        

        Hereby the rest of the summary file:

        Configure summary
        
        Building on:   linux-g++ (x86_64, CPU features: mmx sse sse2)
        Building for:  devices/linux-rasp-pi2-g++ (arm, CPU features: neon)
        Platform notes:
        
                    - Also available for Linux: linux-clang linux-kcc linux-icc linux-cxx
                
        qmake vars .......... styles += mac fusion windows QT_LIBS_DBUS = -L/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf -ldbus-1 QT_CFLAGS_DBUS = -I/home/frank/raspi/sysroot/usr/include/dbus-1.0 -I/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf/dbus-1.0/include QT_HOST_CFLAGS_DBUS = -I/home/frank/raspi/sysroot/usr/include/dbus-1.0 -I/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf/dbus-1.0/include QT_CFLAGS_GLIB = -pthread -I/home/frank/raspi/sysroot/usr/include/glib-2.0 -I/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf/glib-2.0/include QT_LIBS_GLIB = -L/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf -lgthread-2.0 -pthread -lglib-2.0 QT_CFLAGS_PULSEAUDIO = -D_REENTRANT -I/home/frank/raspi/sysroot/usr/include/glib-2.0 -I/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf/glib-2.0/include QT_LIBS_PULSEAUDIO = -L/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf -lpulse-mainloop-glib -lpulse -lglib-2.0 QMAKE_INCDIR_OPENGL_ES2 =  QMAKE_LIBDIR_OPENGL_ES2 =  "/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf" QMAKE_LIBS_OPENGL_ES2 =  "-lGLESv2" QMAKE_CFLAGS_OPENGL_ES2 =  QMAKE_CFLAGS_FONTCONFIG = -I/home/frank/raspi/sysroot/usr/include/freetype2 QMAKE_LIBS_FONTCONFIG = -L/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf -lfontconfig -lfreetype QMAKE_INCDIR_LIBUDEV =  QMAKE_LIBS_LIBUDEV = -L/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf -ludev QMAKE_INCDIR_XKBCOMMON_EVDEV =  QMAKE_LIBS_XKBCOMMON_EVDEV = -L/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf -lxkbcommon QMAKE_LIBINPUT_VERSION_MAJOR = 0 QMAKE_LIBINPUT_VERSION_MINOR = 6 QMAKE_INCDIR_LIBINPUT =  QMAKE_LIBS_LIBINPUT = -L/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf -linput QMAKE_X11_PREFIX = /usr DEFINES += QT_NO_XKB QMAKE_XKB_CONFIG_ROOT = /usr/share/X11/xkb sql-drivers =  sql-plugins =  odbc sqlite sqlite2 tds qmake switches ......... 
        
        Build options:
          Configuration .......... accessibility accessibility-atspi-bridge alsa audio-backend c++11 clock-gettime clock-monotonic compile_examples concurrent cross_compile cups dbus dbus-linked doubleconversion egl eglfs eglfs_egldevice eglfs_gbm egl_x11 enable_new_dtags evdev eventfd fontconfig full-config gbm getaddrinfo getifaddrs glib gstreamer-0.10 harfbuzz iconv inotify ipv6ifname kms large-config largefile libinput libudev linuxfb medium-config minimal-config mremap mtdev neon opengl opengles2 openssl openvg pcre png poll_ppoll posix_fallocate precompile_header pulseaudio qpa qpa reduce_exports release rpath shared small-config system-freetype system-jpeg system-png system-zlib threadsafe-cloexec tslib use_gold_linker xcb xcb-glx xcb-plugin xcb-render xcb-xlib xinput2 xkbcommon-evdev xkbcommon-qt xlib xrender 
          Build parts ............  libs
          Mode ................... release
          Using sanitizer(s)...... none
          Using C++ standard ..... c++11
          Using gold linker....... yes
          Using new DTAGS ........ yes
          Using PCH .............. yes
          Using LTCG ............. no
          Target compiler supports:
            Neon ................. yes
        
        Qt modules and options:
          Qt D-Bus ............... yes (linked to dbus-1)
          Qt Concurrent .......... yes
          Qt GUI ................. yes
          Qt Widgets ............. yes
          Large File ............. yes
          QML debugging .......... yes
          Use system proxies ..... no
        
        Support enabled for:
          Accessibility .......... yes
          ALSA ................... yes
          CUPS ................... yes
          DoubleConversion........ yes (bundled copy)
          Evdev .................. yes
          FontConfig ............. yes
          FreeType ............... yes (system library)
          Glib ................... yes
          GStreamer .............. yes (0.10)
          GTK platformtheme ...... no
          HarfBuzz ............... yes (bundled copy)
          Iconv .................. yes
          ICU .................... no
          Image formats: 
            GIF .................. yes (plugin, using bundled copy)
            JPEG ................. yes (plugin, using system library)
            PNG .................. yes (in QtGui, using system library)
          libinput................ yes
          Logging backends: 
            journald ............... no
            syslog   ............... no
          mtdev .................. yes (system library)
          Networking: 
            getaddrinfo .......... yes
            getifaddrs ........... yes
            IPv6 ifname .......... yes
            libproxy.............. no
            OpenSSL .............. yes (loading libraries at run-time)
          OpenGL / OpenVG: 
            EGL .................. yes
            OpenGL ............... yes (OpenGL ES 2.0+)
            OpenVG ............... yes-auto
          PCRE ................... yes (bundled copy)
          pkg-config ............. yes 
          PulseAudio ............. yes
          QPA backends: 
            DirectFB ............. no
            EGLFS ................ yes
              EGLFS i.MX6 ........ no
              EGLFS i.MX6 Wayland. no
              EGLFS EGLDevice .... yes
              EGLFS GBM .......... yes
              EGLFS Mali ......... no
              EGLFS Raspberry Pi . no
              EGLFS X11 .......... yes
            LinuxFB .............. yes
            Mir client............ no
            XCB .................. yes (system library)
              EGL on X ........... yes
              GLX ................ yes
              MIT-SHM ............ yes
              Xcb-Xlib ........... yes
              Xcursor ............ yes (loaded at runtime)
              Xfixes ............. yes (loaded at runtime)
              Xi2 ................ yes
              Xrandr ............. yes (loaded at runtime)
              Xrender ............ yes
              XKB ................ no
              XShape ............. yes
              XSync .............. yes
          Session management ..... yes
          SQL drivers: 
            DB2 .................. no
            InterBase ............ no
            MySQL ................ no
            OCI .................. no
            ODBC ................. yes (plugin)
            PostgreSQL ........... no
            SQLite 2 ............. yes (plugin)
            SQLite ............... yes (plugin, using bundled copy)
            TDS .................. yes (plugin)
          tslib .................. yes
          udev ................... yes
          xkbcommon-x11........... yes (bundled copy, XKB config root: /usr/share/X11/xkb)
          xkbcommon-evdev......... yes
          zlib ................... yes (system library)
        
        
        NOTE: Qt is using double for qreal on this system. This is binary incompatible against Qt 5.1.
        Configure with '-qreal float' to create a build that is binary compatible with 5.1.
        
        jsulmJ 1 Reply Last reply
        0
        • V Vulpecula

          I used the method descripted on the wiki.

          ./configure -release -opengl es2 -device linux-rasp-pi2-g++ \
          -device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- \
          -sysroot ~/raspi/sysroot -opensource -confirm-license -make libs \
          -prefix /usr/local/qt5pi -extprefix ~/raspi/qt5pi -hostprefix ~/raspi/qt5 -v
          

          Hereby the rest of the summary file:

          Configure summary
          
          Building on:   linux-g++ (x86_64, CPU features: mmx sse sse2)
          Building for:  devices/linux-rasp-pi2-g++ (arm, CPU features: neon)
          Platform notes:
          
                      - Also available for Linux: linux-clang linux-kcc linux-icc linux-cxx
                  
          qmake vars .......... styles += mac fusion windows QT_LIBS_DBUS = -L/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf -ldbus-1 QT_CFLAGS_DBUS = -I/home/frank/raspi/sysroot/usr/include/dbus-1.0 -I/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf/dbus-1.0/include QT_HOST_CFLAGS_DBUS = -I/home/frank/raspi/sysroot/usr/include/dbus-1.0 -I/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf/dbus-1.0/include QT_CFLAGS_GLIB = -pthread -I/home/frank/raspi/sysroot/usr/include/glib-2.0 -I/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf/glib-2.0/include QT_LIBS_GLIB = -L/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf -lgthread-2.0 -pthread -lglib-2.0 QT_CFLAGS_PULSEAUDIO = -D_REENTRANT -I/home/frank/raspi/sysroot/usr/include/glib-2.0 -I/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf/glib-2.0/include QT_LIBS_PULSEAUDIO = -L/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf -lpulse-mainloop-glib -lpulse -lglib-2.0 QMAKE_INCDIR_OPENGL_ES2 =  QMAKE_LIBDIR_OPENGL_ES2 =  "/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf" QMAKE_LIBS_OPENGL_ES2 =  "-lGLESv2" QMAKE_CFLAGS_OPENGL_ES2 =  QMAKE_CFLAGS_FONTCONFIG = -I/home/frank/raspi/sysroot/usr/include/freetype2 QMAKE_LIBS_FONTCONFIG = -L/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf -lfontconfig -lfreetype QMAKE_INCDIR_LIBUDEV =  QMAKE_LIBS_LIBUDEV = -L/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf -ludev QMAKE_INCDIR_XKBCOMMON_EVDEV =  QMAKE_LIBS_XKBCOMMON_EVDEV = -L/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf -lxkbcommon QMAKE_LIBINPUT_VERSION_MAJOR = 0 QMAKE_LIBINPUT_VERSION_MINOR = 6 QMAKE_INCDIR_LIBINPUT =  QMAKE_LIBS_LIBINPUT = -L/home/frank/raspi/sysroot/usr/lib/arm-linux-gnueabihf -linput QMAKE_X11_PREFIX = /usr DEFINES += QT_NO_XKB QMAKE_XKB_CONFIG_ROOT = /usr/share/X11/xkb sql-drivers =  sql-plugins =  odbc sqlite sqlite2 tds qmake switches ......... 
          
          Build options:
            Configuration .......... accessibility accessibility-atspi-bridge alsa audio-backend c++11 clock-gettime clock-monotonic compile_examples concurrent cross_compile cups dbus dbus-linked doubleconversion egl eglfs eglfs_egldevice eglfs_gbm egl_x11 enable_new_dtags evdev eventfd fontconfig full-config gbm getaddrinfo getifaddrs glib gstreamer-0.10 harfbuzz iconv inotify ipv6ifname kms large-config largefile libinput libudev linuxfb medium-config minimal-config mremap mtdev neon opengl opengles2 openssl openvg pcre png poll_ppoll posix_fallocate precompile_header pulseaudio qpa qpa reduce_exports release rpath shared small-config system-freetype system-jpeg system-png system-zlib threadsafe-cloexec tslib use_gold_linker xcb xcb-glx xcb-plugin xcb-render xcb-xlib xinput2 xkbcommon-evdev xkbcommon-qt xlib xrender 
            Build parts ............  libs
            Mode ................... release
            Using sanitizer(s)...... none
            Using C++ standard ..... c++11
            Using gold linker....... yes
            Using new DTAGS ........ yes
            Using PCH .............. yes
            Using LTCG ............. no
            Target compiler supports:
              Neon ................. yes
          
          Qt modules and options:
            Qt D-Bus ............... yes (linked to dbus-1)
            Qt Concurrent .......... yes
            Qt GUI ................. yes
            Qt Widgets ............. yes
            Large File ............. yes
            QML debugging .......... yes
            Use system proxies ..... no
          
          Support enabled for:
            Accessibility .......... yes
            ALSA ................... yes
            CUPS ................... yes
            DoubleConversion........ yes (bundled copy)
            Evdev .................. yes
            FontConfig ............. yes
            FreeType ............... yes (system library)
            Glib ................... yes
            GStreamer .............. yes (0.10)
            GTK platformtheme ...... no
            HarfBuzz ............... yes (bundled copy)
            Iconv .................. yes
            ICU .................... no
            Image formats: 
              GIF .................. yes (plugin, using bundled copy)
              JPEG ................. yes (plugin, using system library)
              PNG .................. yes (in QtGui, using system library)
            libinput................ yes
            Logging backends: 
              journald ............... no
              syslog   ............... no
            mtdev .................. yes (system library)
            Networking: 
              getaddrinfo .......... yes
              getifaddrs ........... yes
              IPv6 ifname .......... yes
              libproxy.............. no
              OpenSSL .............. yes (loading libraries at run-time)
            OpenGL / OpenVG: 
              EGL .................. yes
              OpenGL ............... yes (OpenGL ES 2.0+)
              OpenVG ............... yes-auto
            PCRE ................... yes (bundled copy)
            pkg-config ............. yes 
            PulseAudio ............. yes
            QPA backends: 
              DirectFB ............. no
              EGLFS ................ yes
                EGLFS i.MX6 ........ no
                EGLFS i.MX6 Wayland. no
                EGLFS EGLDevice .... yes
                EGLFS GBM .......... yes
                EGLFS Mali ......... no
                EGLFS Raspberry Pi . no
                EGLFS X11 .......... yes
              LinuxFB .............. yes
              Mir client............ no
              XCB .................. yes (system library)
                EGL on X ........... yes
                GLX ................ yes
                MIT-SHM ............ yes
                Xcb-Xlib ........... yes
                Xcursor ............ yes (loaded at runtime)
                Xfixes ............. yes (loaded at runtime)
                Xi2 ................ yes
                Xrandr ............. yes (loaded at runtime)
                Xrender ............ yes
                XKB ................ no
                XShape ............. yes
                XSync .............. yes
            Session management ..... yes
            SQL drivers: 
              DB2 .................. no
              InterBase ............ no
              MySQL ................ no
              OCI .................. no
              ODBC ................. yes (plugin)
              PostgreSQL ........... no
              SQLite 2 ............. yes (plugin)
              SQLite ............... yes (plugin, using bundled copy)
              TDS .................. yes (plugin)
            tslib .................. yes
            udev ................... yes
            xkbcommon-x11........... yes (bundled copy, XKB config root: /usr/share/X11/xkb)
            xkbcommon-evdev......... yes
            zlib ................... yes (system library)
          
          
          NOTE: Qt is using double for qreal on this system. This is binary incompatible against Qt 5.1.
          Configure with '-qreal float' to create a build that is binary compatible with 5.1.
          
          jsulmJ Online
          jsulmJ Online
          jsulm
          Lifetime Qt Champion
          wrote on last edited by
          #4

          @Vulpecula I don't mean the summary - it does not help. I mean the output of configure when it is being executed.

          https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          1
          • V Offline
            V Offline
            Vulpecula
            wrote on last edited by
            #5

            I did the configure command again and paste it to pastebin.

            jsulmJ 1 Reply Last reply
            0
            • V Vulpecula

              I did the configure command again and paste it to pastebin.

              jsulmJ Online
              jsulmJ Online
              jsulm
              Lifetime Qt Champion
              wrote on last edited by
              #6

              @Vulpecula It cannot find header file bcm_host.h:

              checking for eglfs-brcm...
              /home/frank/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ -c -pipe -march=armv7-a -marm -mthumb-interwork -mfpu=neon-vfpv4 -mtune=cortex-a7 -mabi=aapcs-linux -mfloat-abi=hard --sysroot=/home/frank/raspi/sysroot -O2 -std=gnu++11 -Wall -W -fPIC  -I. -I/home/frank/raspi/sysroot/opt/vc/include -I/home/frank/raspi/sysroot/opt/vc/include/interface/vcos/pthreads -I/home/frank/raspi/sysroot/opt/vc/include/interface/vmcs_host/linux -I../../../mkspecs/devices/linux-rasp-pi2-g++ -o eglfs-brcm.o eglfs-brcm.cpp
              eglfs-brcm.cpp:42:22: fatal error: bcm_host.h: No such file or directory
              #include <bcm_host.h>
                                   ^
              compilation terminated.
              Makefile:552: recipe for target 'eglfs-brcm.o' failed
              make: *** [eglfs-brcm.o] Error 1
              eglfs-brcm disabled.```
              
              Check whether and where it is located in your sysroot and pass the directory containing this header file to configure.

              https://forum.qt.io/topic/113070/qt-code-of-conduct

              N 1 Reply Last reply
              1
              • jsulmJ jsulm

                @Vulpecula It cannot find header file bcm_host.h:

                checking for eglfs-brcm...
                /home/frank/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ -c -pipe -march=armv7-a -marm -mthumb-interwork -mfpu=neon-vfpv4 -mtune=cortex-a7 -mabi=aapcs-linux -mfloat-abi=hard --sysroot=/home/frank/raspi/sysroot -O2 -std=gnu++11 -Wall -W -fPIC  -I. -I/home/frank/raspi/sysroot/opt/vc/include -I/home/frank/raspi/sysroot/opt/vc/include/interface/vcos/pthreads -I/home/frank/raspi/sysroot/opt/vc/include/interface/vmcs_host/linux -I../../../mkspecs/devices/linux-rasp-pi2-g++ -o eglfs-brcm.o eglfs-brcm.cpp
                eglfs-brcm.cpp:42:22: fatal error: bcm_host.h: No such file or directory
                #include <bcm_host.h>
                                     ^
                compilation terminated.
                Makefile:552: recipe for target 'eglfs-brcm.o' failed
                make: *** [eglfs-brcm.o] Error 1
                eglfs-brcm disabled.```
                
                Check whether and where it is located in your sysroot and pass the directory containing this header file to configure.
                N Offline
                N Offline
                Naahmi
                wrote on last edited by
                #7

                @jsulm looks like that you dont have the header files from paspberry pi https://github.com/raspberrypi/firmware/blob/master/opt/vc/include/bcm_host.h

                1 Reply Last reply
                1
                • V Offline
                  V Offline
                  Vulpecula
                  wrote on last edited by
                  #8

                  Thank you for the hint.

                  Because I'm using MiniBian, i had to install libraspberrypi-dev. bcm_host.h is in this package. After the install I synced my raspberry to my development machine and runned the configure command again and the result is as follow:

                  EGLFS ................ yes
                        EGLFS i.MX6 ........ no
                        EGLFS i.MX6 Wayland. no
                        EGLFS EGLDevice .... no
                        EGLFS GBM .......... yes
                        EGLFS Mali ......... no
                        EGLFS Raspberry Pi . yes
                        EGLFS X11 .......... no
                  
                  

                  Thanks for the hint!! :D

                  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