Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. Qt 5.11 for Beaglebone Black
Forum Updated to NodeBB v4.3 + New Features

Qt 5.11 for Beaglebone Black

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
18 Posts 2 Posters 10.6k Views 1 Watching
  • 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.
  • shylockS Offline
    shylockS Offline
    shylock
    wrote on last edited by shylock
    #1

    I am using Beaglebone Black Rev C with BB-View CapeManager as follow:

    1/ Latest kernel version "Linux arm 4.15.0-bone2.1 #1 Tue Jan 30 11:48:09 GMT 2018 armv7l armv7l armv7l GNU/Linux"

    2/ BBB fire up correctly and screen work correctly

    3/ Build Qt-everywhere package 5.11 fro io.qtdownload site

    4/ The Qt for ARM build successfully and deployed across Beaglbone black

    5/ A small test program developed on x86_64bit development Machine, targeted for an ARM.

    6/ I am using cross-compiler toolchain "arm-linux-gnueabihf-gcc-7.2.1-*"

    7/ Binary program definitely generating executable for an ARM cpu

    8/ After deployment of the binary test program on BBB machine.An error!

    9/ "./test: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.25' not found (required by /usr/local/qt5.11/lib/libQt5Core.so.5)"

    0/ I ran on BBB "sudo ldconfig -v

    a/ The lib 'ib/arm-linux-gnueabihf/libc.so.6' exists in the given path

    b/ After executing command objdump -p test following result I get

    ubuntu@arm:~$ objdump -p test
    
    test:     file format elf32-littlearm
    Program Header:
    0x70000001 off    0x00000a58 vaddr 0x00010a58 paddr 0x00010a58 align 2**2
             filesz 0x00000018 memsz 0x00000018 flags r--
        PHDR off    0x00000034 vaddr 0x00010034 paddr 0x00010034 align 2**2
             filesz 0x00000120 memsz 0x00000120 flags r-x
      INTERP off    0x00000154 vaddr 0x00010154 paddr 0x00010154 align 2**0
             filesz 0x00000019 memsz 0x00000019 flags r--
        LOAD off    0x00000000 vaddr 0x00010000 paddr 0x00010000 align 2**16
             filesz 0x00000a74 memsz 0x00000a74 flags r-x
        LOAD off    0x00000ec4 vaddr 0x00020ec4 paddr 0x00020ec4 align 2**16
             filesz 0x0000018c memsz 0x00000194 flags rw-
     DYNAMIC off    0x00000ed0 vaddr 0x00020ed0 paddr 0x00020ed0 align 2**2
             filesz 0x00000130 memsz 0x00000130 flags rw-
        NOTE off    0x00000170 vaddr 0x00010170 paddr 0x00010170 align 2**2
             filesz 0x00000044 memsz 0x00000044 flags r--
       STACK off    0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**4
             filesz 0x00000000 memsz 0x00000000 flags rw-
       RELRO off    0x00000ec4 vaddr 0x00020ec4 paddr 0x00020ec4 align 2**0
             filesz 0x0000013c memsz 0x0000013c flags r--
    
    Dynamic Section:
      NEEDED               libQt5Gui.so.5
      NEEDED               libQt5Core.so.5
      NEEDED               librt.so.1
      NEEDED               libdl.so.2
      NEEDED               libpthread.so.0
      NEEDED               libstdc++.so.6
      NEEDED               libm.so.6
      NEEDED               libgcc_s.so.1
      NEEDED               libc.so.6
      RPATH                /usr/local/qt5.11/lib
      INIT                 0x000107e0
      FINI                 0x00010a28
      INIT_ARRAY           0x00020ec4
      INIT_ARRAYSZ         0x00000008
      FINI_ARRAY           0x00020ecc
      FINI_ARRAYSZ         0x00000004
      HASH                 0x000101b4
      STRTAB               0x00010408
      SYMTAB               0x000102a8
      STRSZ                0x000002a2
      SYMENT               0x00000010
      DEBUG                0x00000000
      PLTGOT               0x00021000
      PLTRELSZ             0x00000060
      PLTREL               0x00000011
      JMPREL               0x00010780
      REL                  0x00010768
      RELSZ                0x00000018
      RELENT               0x00000008
      VERNEED              0x000106d8
      VERNEEDNUM           0x00000003
      VERSYM               0x000106aa
    Version References:
      required from libQt5Core.so.5:
        0x00058a25 0x00 04 Qt_5
      required from libstdc++.so.6:
        0x0849afa3 0x00 07 CXXABI_ARM_1.3.3
        0x02297f89 0x00 06 GLIBCXX_3.4.9
        0x056bafd3 0x00 05 CXXABI_1.3
        0x08922974 0x00 03 GLIBCXX_3.4
      required from libc.so.6:
        0x0d696914 0x00 02 GLIBC_2.4
    private flags = 5000400: [Version5 EABI] [hard-float ABI]
    
    Please can anyone shed a light on this issue? Cannot figure next to explore?
    

    c/ On Beaglebonblack I am using rootfs UBUNTU 16.04

    model name  : ARMv7 Processor rev 2 (v7l)
    
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 16.04.3 LTS
    Release:    16.04
    Codename:   xenial
    

    d/ I only have a barebone Kernel + rootfs on BB Black board.

    Your help, advise tip(s) or any info on this problem will be greatly appreciated. Thank you,

    1 Reply Last reply
    0
    • sierdzioS Offline
      sierdzioS Offline
      sierdzio
      Moderators
      wrote on last edited by
      #2

      I'd say your sysroot is bad. It is building against a newer version of GLIBC than your target board contains.

      I recommend using the sysroot directly from your BBB. See, for example, how this wiki does it: https://wiki.qt.io/RaspberryPi2EGLFS

      (Z(:^

      1 Reply Last reply
      2
      • shylockS Offline
        shylockS Offline
        shylock
        wrote on last edited by
        #3

        Hello Sierdzio,

        I was replicating I mean following the URL for BBB build procedure from following.
        https://wiki.qt.io/BeagleBone_Black_Beginners_Guide
        I replicated to its every line as advised.
        This simply reflects that the information furnished on this wiki page either incorrect or outdated.
        I am beginning to suspect that the compiler I used from Linaro i.e linux-arm-linaro-7.2.1-gnueabihf (hard float) is a culprit? As I have to modify least two files as follow:

        a) ..qtbase/mkspecs/devices/linux-beagleboard-g++/qmake/qmake.conf

        #COMPILER_FLAGS      = -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mthumb
        COMPILER_FLAGS       = -mfloat-abi=hard
        

        AND ...
        b) qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

        # modifications to g++.conf
        QMAKE_CC                = arm-linux-gnueabihf-gcc
        QMAKE_CXX               = arm-linux-gnueabihf-g++
        QMAKE_LINK              = arm-linux-gnueabihf-g++
        QMAKE_LINK_SHLIB        = arm-linux-gnueabihf-g++
        # modifications to linux.conf
        QMAKE_AR                        = arm-linux-gnueabihf-ar cqs
        QMAKE_OBJCOPY           = arm-linux-gnueabihf-objcopy
        QMAKE_NM                     = arm-linux-gnueabihf-nm -P
        QMAKE_STRIP                = arm-linux-gnueabihf-strip
        

        for an inclusion of compiler correct syntax for make.

        I wonder what is your comment on this?
        You mentioned 'sysroot is bad it is building against a newer version of GLIBC that your target board contains.'

        I build target board BBB kernel with latest version 4.15.0-bone2.1 from
        git clone https://github.com/RobertCNelson/bb-kernel

        Thank you,

        sierdzioS 1 Reply Last reply
        0
        • shylockS shylock

          Hello Sierdzio,

          I was replicating I mean following the URL for BBB build procedure from following.
          https://wiki.qt.io/BeagleBone_Black_Beginners_Guide
          I replicated to its every line as advised.
          This simply reflects that the information furnished on this wiki page either incorrect or outdated.
          I am beginning to suspect that the compiler I used from Linaro i.e linux-arm-linaro-7.2.1-gnueabihf (hard float) is a culprit? As I have to modify least two files as follow:

          a) ..qtbase/mkspecs/devices/linux-beagleboard-g++/qmake/qmake.conf

          #COMPILER_FLAGS      = -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mthumb
          COMPILER_FLAGS       = -mfloat-abi=hard
          

          AND ...
          b) qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

          # modifications to g++.conf
          QMAKE_CC                = arm-linux-gnueabihf-gcc
          QMAKE_CXX               = arm-linux-gnueabihf-g++
          QMAKE_LINK              = arm-linux-gnueabihf-g++
          QMAKE_LINK_SHLIB        = arm-linux-gnueabihf-g++
          # modifications to linux.conf
          QMAKE_AR                        = arm-linux-gnueabihf-ar cqs
          QMAKE_OBJCOPY           = arm-linux-gnueabihf-objcopy
          QMAKE_NM                     = arm-linux-gnueabihf-nm -P
          QMAKE_STRIP                = arm-linux-gnueabihf-strip
          

          for an inclusion of compiler correct syntax for make.

          I wonder what is your comment on this?
          You mentioned 'sysroot is bad it is building against a newer version of GLIBC that your target board contains.'

          I build target board BBB kernel with latest version 4.15.0-bone2.1 from
          git clone https://github.com/RobertCNelson/bb-kernel

          Thank you,

          sierdzioS Offline
          sierdzioS Offline
          sierdzio
          Moderators
          wrote on last edited by
          #4

          @shylock said in Qt 5.11 for Beaglebone Black:

          I am beginning to suspect that the compiler I used from Linaro i.e linux-arm-linaro-7.2.1-gnueabihf (hard float) is a culprit?

          Well, you can either downgrade the toolchain or upgrade the sysroot ;-) Your choice. Or indeed some config is off but I doubt it.

          I build target board BBB kernel with latest version 4.15.0-bone2.1 from

          This is irrelevant. You get the GLIBC error because your binary was compiled using higher GLIBC version than your BBB has - and thus the ABI does not match.

          This simply reflects that the information furnished on this wiki page either incorrect or outdated.

          It's outdated, yes. But also, you are not following it closely if you compile with GCC 7.2 while the wiki mentions 4.9 ;-) Once you resolve the problems you're having, please consider updating the wiki.

          I think the GCC is too new for given OS image (Debian Jessie is an old beast).

          (Z(:^

          1 Reply Last reply
          2
          • shylockS Offline
            shylockS Offline
            shylock
            wrote on last edited by shylock
            #5

            Hi Sierdzio,

            Since your last post, I changed the arm toolchain currently I am using gcc-linaro-4.9/bin/arm-linux-gnueabi-*
            to compile and my configure line read as follow:
            ./configure -v -opensource -confirm-license -prefix /usr/local/qt5.11 -device linux-beagleboard-g++ -device-option CROSS_COMPILE=$HOME/gcc-linaro-4.9/bin/arm-linux-gnueabi- -qt-libpng -qt-libjpeg -release -qpa eglfs -opengl es2 -no-gcc-sysroot

            But I am consistently getting following an error message:
            ================ Error ================
            This is the Qt Open Source Edition.

            You have already accepted the terms of the Open Source license.

            Running configuration tests...
            Checking for gold linker...

            • cd /qt5/qtbase/config.tests && /gcc-linaro-4.9/bin/arm-linux-gnueabi-g++ -fuse-ld=gold -o conftest-out conftest.cpp

            collect2: fatal error: cannot find 'ld'
            compilation terminated.
            test config.qtbase.tests.use_gold_linker FAILED
            Checking for machine tuple...

            • /gcc-linaro-4.9/bin/arm-linux-gnueabi-g++ -dumpmachine

            arm-linux-gnueabi
            test config.qtbase.tests.machineTuple succeeded
            Checking for valid makespec...

            • /qt5/qtbase/config.tests/verifyspec && qt5/qtbase/bin/qmake "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared warn_off console single_arch" -early "CONFIG += cross_compile" /qt5/qtbase/config.tests/verifyspec

            Info: creating stash file /qt5/qtbase/config.tests/.qmake.stash

            • /qt5/qtbase/config.tests/verifyspec && MAKEFLAGS= /usr/bin/make

            /gcc-linaro-4.9/bin/arm-linux-gnueabi-g++ -c -pipe -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mthumb -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mthumb -mfloat-abi=hard -O2 -O3 -std=gnu++11 -w -fPIC -I. -I/qt5/qtbase/mkspecs/devices/linux-beagleboard-g++ -o verifyspec.o verifyspec.cpp
            /gcc-linaro-4.9/bin/arm-linux-gnueabi-g++ -mfloat-abi=hard -Wl,-O1 -o verifyspec verifyspec.o -lrt -lpthread -ldl
            /gcc-linaro-4.9/bin/../lib/gcc/arm-linux-gnueabi/4.9.3/../../../../arm-linux-gnueabi/bin/ld: error: verifyspec.o uses VFP register arguments, verifyspec does not
            /gcc-linaro-4.9/bin/../lib/gcc/arm-linux-gnueabi/4.9.3/../../../../arm-linux-gnueabi/bin/ld: failed to merge target specific data of file verifyspec.o
            collect2: error: ld returned 1 exit status
            Makefile:66: recipe for target 'verifyspec' failed
            make: *** [verifyspec] Error 1
            Note: Also available for Linux: linux-clang linux-icc

            ERROR: Cannot compile a minimal program. The toolchain or QMakeSpec is broken.

            Complete new cloned qt repo.
            By the look of the ld (linker) not found but linker exists in gcc-linaro-4.9/bin directory.

            I looked in qtbase/mkspac/devices/linux-beagleboard-g++/qmake.conf as follow:

            qmake configuration for the BeagleBoard and BeagleBoard xM boards

            http://beagleboard.org/

            MAKEFILE_GENERATOR = UNIX
            CONFIG += incremental
            QMAKE_INCREMENTAL_STYLE = sublib

            include(../../common/linux.conf)
            include(../../common/gcc-base-unix.conf)
            include(../../common/g++-unix.conf)

            load(device_config)

            QT_QPA_DEFAULT_PLATFORM = eglfs

            modifications to g++.conf

            QMAKE_CC = $${CROSS_COMPILE}gcc
            QMAKE_CXX = $${CROSS_COMPILE}g++
            QMAKE_LINK = $${QMAKE_CXX}
            QMAKE_LINK_SHLIB = $${QMAKE_CXX}

            modifications to linux.conf

            QMAKE_AR = $${CROSS_COMPILE}ar cqs
            QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy
            QMAKE_NM = $${CROSS_COMPILE}nm -P
            QMAKE_STRIP = $${CROSS_COMPILE}strip

            COMPILER_FLAGS = -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mthumb

            #modifications to gcc-base.conf
            QMAKE_CFLAGS += $${COMPILER_FLAGS}
            QMAKE_CXXFLAGS += $${COMPILER_FLAGS}
            QMAKE_CXXFLAGS_RELEASE += -O3

            QMAKE_LIBS += -lrt -lpthread -ldl

            Extra stuff (OpenGL, DirectFB, ...)

            QMAKE_INCDIR_EGL =
            QMAKE_LIBDIR_EGL =
            QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL}
            QMAKE_LIBDIR_OPENGL_ES2 = $${QMAKE_LIBDIR_EGL}
            QMAKE_INCDIR_OPENVG = $${QMAKE_INCDIR_EGL}
            QMAKE_LIBDIR_OPENVG = $${QMAKE_LIBDIR_EGL}

            QMAKE_LIBS_EGL = -lEGL -lIMGegl -lsrv_um
            QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL}
            QMAKE_LIBS_OPENVG = -lOpenVG $${QMAKE_LIBS_EGL}

            DISTRO_OPTS += hard-float

            No need for any special EGL device integration.

            Prioritize the default, compiled-in integration over any plugins.

            EGLFS_DEVICE_INTEGRATION = none

            include(../common/linux_arm_device_post.conf)

            load(qt_config)

            1 Reply Last reply
            0
            • sierdzioS Offline
              sierdzioS Offline
              sierdzio
              Moderators
              wrote on last edited by
              #6

              You can disable the gold linker by passing -no-use-gold-linker to Qt's configure script.

              (Z(:^

              1 Reply Last reply
              1
              • shylockS Offline
                shylockS Offline
                shylock
                wrote on last edited by
                #7

                @sierdzio said in Qt 5.11 for Beaglebone Black:

                -no-use-gold-linker

                Hi Serdzio,

                I used my configure script syntax as you prescribed, as follow

                ./configure -v -opensource -confirm-license -prefix /usr/local/qt5.11 -device linux-beagleboard-g++ -device-option CROSS_COMPILE=$HOME/gcc-linaro-4.9/bin/arm-linux-gnueabi- -qt-libpng -qt-libjpeg -qpa eglfs -opengl es2 -no-gcc-sysroot -release -no-use-gold-linker
                

                But error seems to be still creeping in I wonder why?

                This is the Qt Open Source Edition.
                
                You have already accepted the terms of the Open Source license.
                
                Running configuration tests...
                Checking for machine tuple... 
                + /home/userdir/gcc-linaro-4.9/bin/arm-linux-gnueabi-g++ -dumpmachine
                > arm-linux-gnueabi
                test config.qtbase.tests.machineTuple succeeded
                Checking for valid makespec... 
                + cd /home/userdir/qt5/config.tests/verifyspec && /home/userdir/qt5/qtbase/bin/qmake "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared warn_off console single_arch" -early "CONFIG += cross_compile" /home/userdir/qt5/qtbase/config.tests/verifyspec
                + cd /home/userdir/qt5/config.tests/verifyspec && MAKEFLAGS= /usr/bin/make
                > /home/userdir/gcc-linaro-4.9/bin/arm-linux-gnueabi-g++ -c -pipe -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mthumb -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mthumb -mfloat-abi=hard -O2 -O3 -std=gnu++11 -w -fPIC  -I/home/userdir/qt5/qtbase/config.tests/verifyspec -I. -I/home/userdir/qt5/qtbase/mkspecs/devices/linux-beagleboard-g++ -o verifyspec.o /home/userdir/qt5/qtbase/config.tests/verifyspec/verifyspec.cpp
                > /home/userdir/gcc-linaro-4.9/bin/arm-linux-gnueabi-g++ -mfloat-abi=hard -Wl,-O1 -o verifyspec verifyspec.o   -lrt -lpthread -ldl 
                > /home/userdir/gcc-linaro-4.9/bin/../lib/gcc/arm-linux-gnueabi/4.9.3/../../../../arm-linux-gnueabi/bin/ld: error: verifyspec.o uses VFP register arguments, verifyspec does not
                > /home/userdir/gcc-linaro-4.9/bin/../lib/gcc/arm-linux-gnueabi/4.9.3/../../../../arm-linux-gnueabi/bin/ld: failed to merge target specific data of file verifyspec.o
                > collect2: error: ld returned 1 exit status
                > Makefile:66: recipe for target 'verifyspec' failed
                > make: *** [verifyspec] Error 1
                Note: Also available for Linux: linux-clang linux-icc
                ERROR: Cannot compile a minimal program. The toolchain or QMakeSpec is broken.
                
                1 Reply Last reply
                0
                • sierdzioS Offline
                  sierdzioS Offline
                  sierdzio
                  Moderators
                  wrote on last edited by
                  #8

                  You are mixing hard and soft float architecture somehow. Is your sysroot using softfp? Then you should use the same for Qt compilation (currently you are using armhf - hard float).

                  Some additional info: https://stackoverflow.com/questions/9753749/arm-compilation-error-vfp-registered-used-by-executable-not-object-file

                  (Z(:^

                  1 Reply Last reply
                  1
                  • shylockS Offline
                    shylockS Offline
                    shylock
                    wrote on last edited by
                    #9

                    Sierdzio,
                    I modified a qmake which reside at ..qtbase/mkspec/devices/linux-beaglebone-g++/qmake.conf
                    as follow:

                    #
                    # qmake configuration for the BeagleBoard and BeagleBoard xM boards
                    # http://beagleboard.org/
                    
                    MAKEFILE_GENERATOR      = UNIX
                    CONFIG                 += incremental
                    QMAKE_INCREMENTAL_STYLE = sublib
                    
                    include(../../common/linux.conf)
                    include(../../common/gcc-base-unix.conf)
                    include(../../common/g++-unix.conf)
                    
                    load(device_config)
                    
                    QT_QPA_DEFAULT_PLATFORM = eglfs
                    
                    # modifications to g++.conf
                    QMAKE_CC                = $${CROSS_COMPILE}gcc
                    QMAKE_CXX               = $${CROSS_COMPILE}g++
                    QMAKE_LINK              = $${QMAKE_CXX}
                    QMAKE_LINK_SHLIB        = $${QMAKE_CXX}
                    
                    # modifications to linux.conf
                    QMAKE_AR                = $${CROSS_COMPILE}ar cqs
                    QMAKE_OBJCOPY           = $${CROSS_COMPILE}objcopy
                    QMAKE_NM                = $${CROSS_COMPILE}nm -P
                    QMAKE_STRIP             = $${CROSS_COMPILE}strip
                    
                    **#COMPILER_FLAGS          = -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mthumb** (disabled)
                    COMPILER_FLAGS          = -mfloat-abi=softfp  (enable)
                    
                    #modifications to gcc-base.conf
                    QMAKE_CFLAGS           += $${COMPILER_FLAGS}
                    QMAKE_CXXFLAGS         += $${COMPILER_FLAGS}
                    QMAKE_CXXFLAGS_RELEASE += -O3
                    
                    QMAKE_LIBS             += -lrt -lpthread -ldl
                    
                    # Extra stuff (OpenGL, DirectFB, ...)
                    QMAKE_INCDIR_EGL        =
                    QMAKE_LIBDIR_EGL        =
                    QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL}
                    QMAKE_LIBDIR_OPENGL_ES2 = $${QMAKE_LIBDIR_EGL}
                    QMAKE_INCDIR_OPENVG     = $${QMAKE_INCDIR_EGL}
                    QMAKE_LIBDIR_OPENVG     = $${QMAKE_LIBDIR_EGL}
                    
                    QMAKE_LIBS_EGL          = -lEGL -lIMGegl -lsrv_um
                    QMAKE_LIBS_OPENGL_ES2   = -lGLESv2 $${QMAKE_LIBS_EGL}
                    QMAKE_LIBS_OPENVG       = -lOpenVG $${QMAKE_LIBS_EGL}
                    
                    **#DISTRO_OPTS += hard-float** (disabled completely)
                    
                    # No need for any special EGL device integration.
                    # Prioritize the default, compiled-in integration over any plugins.
                    EGLFS_DEVICE_INTEGRATION = none
                    
                    include(../common/linux_arm_device_post.conf)
                    
                    load(qt_config)
                    

                    The configuration syntax as follow:

                    ./configure -v -opensource -confirm-license -prefix /usr/local/qt5.11 -device linux-beagleboard-g++ -device-option CROSS_COMPILE=$HOME/gcc-linaro-4.9/bin/arm-linux-gnueabi- -qt-libpng -qt-libjpeg -qpa eglfs -no-opengl -qpa tslib -no-gcc-sysroot -release -no-use-gold-linker
                    

                    This time ./configuration script succeeded, I hope this could be reference to someone who need solution.
                    please advise who to update the QT website page for BBB.
                    https://wiki.qt.io/BeagleBone_Black_Beginners_Guide
                    Thank you,

                    sierdzioS 1 Reply Last reply
                    1
                    • shylockS shylock

                      Sierdzio,
                      I modified a qmake which reside at ..qtbase/mkspec/devices/linux-beaglebone-g++/qmake.conf
                      as follow:

                      #
                      # qmake configuration for the BeagleBoard and BeagleBoard xM boards
                      # http://beagleboard.org/
                      
                      MAKEFILE_GENERATOR      = UNIX
                      CONFIG                 += incremental
                      QMAKE_INCREMENTAL_STYLE = sublib
                      
                      include(../../common/linux.conf)
                      include(../../common/gcc-base-unix.conf)
                      include(../../common/g++-unix.conf)
                      
                      load(device_config)
                      
                      QT_QPA_DEFAULT_PLATFORM = eglfs
                      
                      # modifications to g++.conf
                      QMAKE_CC                = $${CROSS_COMPILE}gcc
                      QMAKE_CXX               = $${CROSS_COMPILE}g++
                      QMAKE_LINK              = $${QMAKE_CXX}
                      QMAKE_LINK_SHLIB        = $${QMAKE_CXX}
                      
                      # modifications to linux.conf
                      QMAKE_AR                = $${CROSS_COMPILE}ar cqs
                      QMAKE_OBJCOPY           = $${CROSS_COMPILE}objcopy
                      QMAKE_NM                = $${CROSS_COMPILE}nm -P
                      QMAKE_STRIP             = $${CROSS_COMPILE}strip
                      
                      **#COMPILER_FLAGS          = -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mthumb** (disabled)
                      COMPILER_FLAGS          = -mfloat-abi=softfp  (enable)
                      
                      #modifications to gcc-base.conf
                      QMAKE_CFLAGS           += $${COMPILER_FLAGS}
                      QMAKE_CXXFLAGS         += $${COMPILER_FLAGS}
                      QMAKE_CXXFLAGS_RELEASE += -O3
                      
                      QMAKE_LIBS             += -lrt -lpthread -ldl
                      
                      # Extra stuff (OpenGL, DirectFB, ...)
                      QMAKE_INCDIR_EGL        =
                      QMAKE_LIBDIR_EGL        =
                      QMAKE_INCDIR_OPENGL_ES2 = $${QMAKE_INCDIR_EGL}
                      QMAKE_LIBDIR_OPENGL_ES2 = $${QMAKE_LIBDIR_EGL}
                      QMAKE_INCDIR_OPENVG     = $${QMAKE_INCDIR_EGL}
                      QMAKE_LIBDIR_OPENVG     = $${QMAKE_LIBDIR_EGL}
                      
                      QMAKE_LIBS_EGL          = -lEGL -lIMGegl -lsrv_um
                      QMAKE_LIBS_OPENGL_ES2   = -lGLESv2 $${QMAKE_LIBS_EGL}
                      QMAKE_LIBS_OPENVG       = -lOpenVG $${QMAKE_LIBS_EGL}
                      
                      **#DISTRO_OPTS += hard-float** (disabled completely)
                      
                      # No need for any special EGL device integration.
                      # Prioritize the default, compiled-in integration over any plugins.
                      EGLFS_DEVICE_INTEGRATION = none
                      
                      include(../common/linux_arm_device_post.conf)
                      
                      load(qt_config)
                      

                      The configuration syntax as follow:

                      ./configure -v -opensource -confirm-license -prefix /usr/local/qt5.11 -device linux-beagleboard-g++ -device-option CROSS_COMPILE=$HOME/gcc-linaro-4.9/bin/arm-linux-gnueabi- -qt-libpng -qt-libjpeg -qpa eglfs -no-opengl -qpa tslib -no-gcc-sysroot -release -no-use-gold-linker
                      

                      This time ./configuration script succeeded, I hope this could be reference to someone who need solution.
                      please advise who to update the QT website page for BBB.
                      https://wiki.qt.io/BeagleBone_Black_Beginners_Guide
                      Thank you,

                      sierdzioS Offline
                      sierdzioS Offline
                      sierdzio
                      Moderators
                      wrote on last edited by
                      #10

                      @shylock said in Qt 5.11 for Beaglebone Black:

                      This time ./configuration script succeeded, I hope this could be reference to someone who need solution.
                      please advise who to update the QT website page for BBB.
                      https://wiki.qt.io/BeagleBone_Black_Beginners_Guide

                      Hey, wow, great news :-) Please also try the compilation itself, too - sometimes the configure tests do not pick all the issues up and compilation fails later (well, Qt is a big beast).

                      You should be able to modify the wiki page yourself - after editing it will display some scary error message but it is OK - the page will be put up for moderation (probably by @tekojo , I'm not sure who accepts the wiki changes).

                      (Z(:^

                      1 Reply Last reply
                      1
                      • shylockS Offline
                        shylockS Offline
                        shylock
                        wrote on last edited by
                        #11

                        Thank 4 confidence,
                        But I am still grappling with the following problem

                        "./qt-arm-test: error while loading shared libraries: libQt5Widgets.so.5: cannot open shared object file: No such file or directory"

                        I checked contents of directory of /usr/local/qt5.11/lib

                        cmake                             libQt5InputSupport.prl
                        libQt5AccessibilitySupport.a      libQt5Network.la
                        libQt5AccessibilitySupport.la     libQt5Network.prl
                        libQt5AccessibilitySupport.prl    libQt5Network.so
                        libQt5Bootstrap.a                 libQt5Network.so.5
                        libQt5Bootstrap.la                libQt5Network.so.5.10
                        libQt5Bootstrap.prl               libQt5Network.so.5.10.1
                        libQt5Concurrent.la               libQt5PrintSupport.la
                        libQt5Concurrent.prl              libQt5PrintSupport.prl
                        libQt5Concurrent.so               libQt5PrintSupport.so
                        libQt5Concurrent.so.5             libQt5PrintSupport.so.5
                        libQt5Concurrent.so.5.10          libQt5PrintSupport.so.5.10
                        libQt5Concurrent.so.5.10.1        libQt5PrintSupport.so.5.10.1
                        libQt5Core.la                     libQt5ServiceSupport.a
                        libQt5Core.prl                    libQt5ServiceSupport.la
                        libQt5Core.so                     libQt5ServiceSupport.prl
                        libQt5Core.so.5                   libQt5Sql.la
                        libQt5Core.so.5.10                libQt5Sql.prl
                        libQt5Core.so.5.10.1              libQt5Sql.so
                        libQt5DBus.la                     libQt5Sql.so.5
                        libQt5DBus.prl                    libQt5Sql.so.5.10
                        libQt5DBus.so                     libQt5Sql.so.5.10.1
                        libQt5DBus.so.5                   libQt5Test.la
                        libQt5DBus.so.5.10                libQt5Test.prl
                        libQt5DBus.so.5.10.1              libQt5Test.so
                        libQt5DeviceDiscoverySupport.a    libQt5Test.so.5
                        libQt5DeviceDiscoverySupport.la   libQt5Test.so.5.10
                        libQt5DeviceDiscoverySupport.prl  libQt5Test.so.5.10.1
                        libQt5EdidSupport.a               libQt5ThemeSupport.a
                        libQt5EdidSupport.la              libQt5ThemeSupport.la
                        libQt5EdidSupport.prl             libQt5ThemeSupport.prl
                        libQt5EventDispatcherSupport.a    libQt5Widgets.la
                        libQt5EventDispatcherSupport.la   libQt5Widgets.prl
                        libQt5EventDispatcherSupport.prl  libQt5Widgets.so
                        libQt5FbSupport.a                 libQt5Widgets.so.5
                        libQt5FbSupport.la                libQt5Widgets.so.5.10
                        libQt5FbSupport.prl               libQt5Widgets.so.5.10.1
                        libQt5FontDatabaseSupport.a       libQt5Xml.la
                        libQt5FontDatabaseSupport.la      libQt5Xml.prl
                        libQt5FontDatabaseSupport.prl     libQt5Xml.so
                        libQt5Gui.la                      libQt5Xml.so.5
                        libQt5Gui.prl                     libQt5Xml.so.5.10
                        libQt5Gui.so                      libQt5Xml.so.5.10.1
                        libQt5Gui.so.5                    libqtfreetype.a
                        libQt5Gui.so.5.10                 libqtfreetype.prl
                        libQt5Gui.so.5.10.1               libqtlibpng.a
                        libQt5InputSupport.a              libqtlibpng.prl
                        libQt5InputSupport.la             pkgconfig
                        

                        I manage to build the qt on my x86_64 server.
                        after "sudo make install on my dev machine"
                        I copied an entire directory of qt5.11 across the BBB and moved in /usr/local/qt5.11 directory structure.
                        the directory /usr/local/qt5.11/lib has all the libs which were build on theserver.
                        A quick small qt program developed and deployed to BBB to run ./qt-arm-test But
                        I have following problem
                        error while loading shared libraries: libQt5Widgets.so.5: cannot open shared object file: No such file or directory
                        I ran ldconfig -v and my environment variable for LD_LIBRARY_PATH=/usr/local/qt5.11/lib

                        echo $LD_LIBRARY_PATH 
                        /usr/local/qt5.11/lib:/usr/local/lib:/lib/arm-linux-gnueabihf:/lib
                        

                        while $PATH variable also points to qt5.11/lib directory.
                        But still, the application failed to run. How can be remedied this problem? I have thrown almost everything lock, stock n barrel.

                        1 Reply Last reply
                        0
                        • sierdzioS Offline
                          sierdzioS Offline
                          sierdzio
                          Moderators
                          wrote on last edited by
                          #12

                          Check where it is looking for libQt5Widgets with ldd:

                          ldd qt-arm-test
                          

                          You can also run it on your Qt .so files to see if they look correct.

                          (Z(:^

                          1 Reply Last reply
                          0
                          • shylockS Offline
                            shylockS Offline
                            shylock
                            wrote on last edited by
                            #13

                            I am using BBB with kernel 4.15.1 without any graphical server.
                            I understood that the QT provide graphical rendering on the screen. As I knew that
                            graphic rendering done by X11 windowing system or Framebuffer or EGLs by qt but in true sense egls require sgfx_graphic rendering manager to which currently not installed in fact none of x11, xorg, fb or sgx driver currently exists with kernel.
                            My requirements are minimum or no desktop graphical environment. The application program will render all the graphic through Qt's egls facility.
                            Can you please shed a light on this to run minimum graphic or only Qt-application will render graphics during its session.
                            How can be achieved.

                            1 Reply Last reply
                            0
                            • sierdzioS Offline
                              sierdzioS Offline
                              sierdzio
                              Moderators
                              wrote on last edited by
                              #14

                              Qt can run without windowing system when you run it with EGLFS plugin. Possibly also with LinuxFB, but that plugin is not actively maintained anymore. You need to have the drivers and OpenGL libs installed.

                              To make sure EGLFS plugin is compiled, check your configure output.

                              To run your application with EGLFS plugin, run it like this:

                              ./your_app -platform eglfs
                              

                              (Z(:^

                              1 Reply Last reply
                              0
                              • shylockS Offline
                                shylockS Offline
                                shylock
                                wrote on last edited by
                                #15

                                Hi
                                I built Qt5 for Beaglebone Black, ON BeagleBone Black computer itsefl with 'arm-linux-gnueabihf-' compiler located in the BBB's /usr/bin/ directory an entire qt5 build succeeded
                                cloning http://code.qt.io/cgit/qt/qt5.git/?h=5.11
                                and configuring as follow:
                                ./configure -v -opensource -confirm-license -prefix /usr/local/qt5.11 -device linux-beagleboard-g++ -device-option
                                CROSS_COMPILE=/usr/arm-linux-gnueabihf- -qt-libpng -qt-libjpeg -no-opengl -qpa eglfs -no-gcc-sysroot -release -no-use-gold-linker -ico -gif -platform linux-clang

                                when I run a test program on the BBB computer I am keep getting following message:
                                This application failed to start because it could not find the Qt platform plugin "eglfs" in "".
                                Application platform plugins are: linuxfb, minimal, offscreen, vnc
                                Reinstalling the application may fix this problem.
                                Aborted.

                                Although I have install xdm, xorg on BBB and I can startx window which run perfectly but my own test program cannot????
                                as you can see I included in my configure eglfs option.
                                Some help will be truly grateful
                                thank you,

                                1 Reply Last reply
                                0
                                • sierdzioS Offline
                                  sierdzioS Offline
                                  sierdzio
                                  Moderators
                                  wrote on last edited by
                                  #16

                                  Check configure output - does it say that EGLFS support will actually be compiled?

                                  xdm, xorg on BBB and I can startx

                                  That's unrelated to EGLFS.

                                  (Z(:^

                                  1 Reply Last reply
                                  0
                                  • shylockS Offline
                                    shylockS Offline
                                    shylock
                                    wrote on last edited by
                                    #17

                                    Hello Sierdzio,
                                    I revisited my qt5 build as follow
                                    /home/username/qt5/qtbase/src/plugins/platforms
                                    Where Makefile resides. Runnings again 'make' that will build entire contents of platform directory including eglfs vnc and linuxfb ... etc.
                                    while 'sudo make install' will get installed in /usr/local/qt5.11/... directory I assume. So the rebuilding platforms directory will definitely build eglfs and install.
                                    Whats your thoughts ... pls let know.

                                    sierdzioS 1 Reply Last reply
                                    0
                                    • shylockS shylock

                                      Hello Sierdzio,
                                      I revisited my qt5 build as follow
                                      /home/username/qt5/qtbase/src/plugins/platforms
                                      Where Makefile resides. Runnings again 'make' that will build entire contents of platform directory including eglfs vnc and linuxfb ... etc.
                                      while 'sudo make install' will get installed in /usr/local/qt5.11/... directory I assume. So the rebuilding platforms directory will definitely build eglfs and install.
                                      Whats your thoughts ... pls let know.

                                      sierdzioS Offline
                                      sierdzioS Offline
                                      sierdzio
                                      Moderators
                                      wrote on last edited by
                                      #18

                                      @shylock said in Qt 5.11 for Beaglebone Black:

                                      Whats your thoughts ... pls let know.

                                      None, I don't know what your question is ;)

                                      (Z(:^

                                      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