Build image without LXDE and Qt5 support

I’m using ubuntu 14.04 installed in VM, Toradex version 2.6, Colibri evaluation board and i.MX7S. I followed pages Open Embedded (Core), Qt Creator cross compile and this post: succesfully build angstrom-lxde-image and meta-toolchain-qt5.

Anyway for my application, i don’t need LXDE desktop environment and need to start a Qt5 qml application at the end of the startup of the board.

Following the instruction in Adding Qt5 layer instruction, and adding this

IMAGE_INSTALL_append = "qtbase qtbase-fonts qtbase-plugins cinematicexperience"

and this

DISTRO_FEATURES_remove = "x11 wayland"
IMAGE_INSTALL_remove = "eglinfo-x11"

to “build/conf/local.conf”. I build a console-trdx-image without success, with following errors

Parsing recipes: 100% |#########################################| Time: 00:01:27
Parsing of 2478 .bb files complete (0 cached, 2478 parsed). 3075 targets, 425 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
ERROR: Nothing RPROVIDES 'trdx-oak-sensorsqtbase' (but /home/guest/oe-core/build/../stuff/meta-toradex/recipes/images/console-trdx-image.bb RDEPENDS on or otherwise requires it)
NOTE: Runtime target 'trdx-oak-sensorsqtbase' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['trdx-oak-sensorsqtbase']
ERROR: Nothing RPROVIDES 'console-trdx-image'
ERROR: No eligible RPROVIDERs exist for 'console-trdx-image'
NOTE: Runtime target 'console-trdx-image' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['console-trdx-image']

Build Configuration:
BB_VERSION        = "1.28.0"
BUILD_SYS         = "i686-linux"
NATIVELSBSTRING   = "Ubuntu-14.04"
TARGET_SYS        = "arm-angstrom-linux-gnueabi"
MACHINE           = "colibri-imx7"
DISTRO            = "angstrom"
DISTRO_VERSION    = "v2015.12"
TUNE_FEATURES     = "arm armv7a vfp thumb neon callconvention-hard"
TARGET_FPU        = "vfp-neon"
meta-angstrom     = "HEAD:85ac035eabb11d57467c58c18d9e5627a1f6fc9e"
meta-toradex      = "HEAD:485643678b2d39d37b1cc9d1aa2200bb934b08de"
meta-linaro-toolchain = "HEAD:7390e4fd59f547f83efe128cb7040ad7c2da0d40"
meta-oe           
meta-efl          
meta-gpe          
meta-gnome        
meta-xfce         
meta-initramfs    
meta-systemd      
meta-networking   
meta-multimedia   
meta-python       = "HEAD:8ab04afbffb4bc5184cfe0655049de6f44269990"
meta-lxde         = "HEAD:59eae5a746ef6cb150bef2a03254d086f2eae0fb"
meta-browser      = "HEAD:e114d625d4bd23a52cc1108a45d96ffd8dc0ab7f"
meta-fsl-arm      = "HEAD:c9e576bdae8c481f5a836531c7865fe8b8a5a36f"
meta-fsl-arm-extra = "HEAD:dd074c47af53948041f6c5671e519fbf815b0980"
meta-fsl-demos    = "HEAD:8bffde8d803dd2362fbded79781ce084d723b048"
meta-jetson-tk1   = "HEAD:400dae80d29bb45b4886cf7f048c6f7b12cb0b01"
meta-qt5          = "HEAD:ea37a0bc987aa9484937ad68f762b4657c198617"
meta              = "HEAD:1f4bfa33073584c25396d74f3929f263f3df188b"

NOTE: Preparing RunQueue
ERROR: All buildable tasks have been run but the build is incomplete (--continue mode). Errors for the tasks that failed will have been printed above.

Another build attempt is to remove this two lines previously added

DISTRO_FEATURES_remove = "x11 wayland"
IMAGE_INSTALL_remove = "eglinfo-x11"

Now the build of console-trdx-image ends ok, but when i try to start my Qt5 qml application i got this error from serial com console:

QXcbConnection: Could not connect to display :0.0

and this error from Qt creator console:

QXcbConnection: Could not connect to display :0.0
sh: line 1:   539 Aborted   DISPLAY=':0.0' /opt/ProvaQmlToradex/bin/ProvaQmlToradex -qws
Application finished with exit code 134.

Thanks for any help you can give.

Can you try and run the application as follows

Qt5_CinematicExperience -platform eglfs

Running:

Qt5_CinematicExperience -platform eglfs

the consequence is:

This application failes to start because it could not find or load the Qt platform plugin "eglfs".
    
Available platform plugins are: minimal, offscreen, xcb.

Reinstalling the application may fix the problem.

Hi

You’re missing a space here:

     IMAGE_INSTALL_append = "qtbase qtbase-fonts qtbase-plugins cinematicexperience"

vs.

     IMAGE_INSTALL_append = " qtbase qtbase-fonts qtbase-plugins cinematicexperience"

That is currently wrong on our developer page, I will fix it there too.
The _append operator literally appends. So it seems in the your case IMAGE_INSTALL ended in “…trdx-oak-sensors” before the append which then resulted in ...trdx-oak-sensorsqtbase qtbase-fonts.... It sounds very strange to me that you could get that to build by just removing

 DISTRO_FEATURES_remove = "x11 wayland"
 IMAGE_INSTALL_remove = "eglinfo-x11"

Whenever you change DISTRO_FEATURES you must delete all your previous build output.

Max

The first error is gone.

Now I have another problem on build console-trdx-image (“build/conf/bblayers.conf” and “build/conf/local.conf” properly modified as Adding Qt5 Layer and also updated head of meta-qt5 to the head of jethro branch)

This is the console:

guest@guest-VirtualBox:~/oe-core/build$ bitbake -k console-trdx-image
Loading cache: 100% |###########################################| ETA:  00:00:00
Loaded 3077 entries from dependency cache.
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION        = "1.28.0"
BUILD_SYS         = "i686-linux"
NATIVELSBSTRING   = "Ubuntu-14.04"
TARGET_SYS        = "arm-angstrom-linux-gnueabi"
MACHINE           = "colibri-imx7"
DISTRO            = "angstrom"
DISTRO_VERSION    = "v2015.12"
TUNE_FEATURES     = "arm armv7a vfp thumb neon callconvention-hard"
TARGET_FPU        = "vfp-neon"
meta-angstrom     = "HEAD:85ac035eabb11d57467c58c18d9e5627a1f6fc9e"
meta-toradex      = "HEAD:485643678b2d39d37b1cc9d1aa2200bb934b08de"
meta-linaro-toolchain = "HEAD:7390e4fd59f547f83efe128cb7040ad7c2da0d40"
meta-oe           
meta-efl          
meta-gpe          
meta-gnome        
meta-xfce         
meta-initramfs    
meta-systemd      
meta-networking   
meta-multimedia   
meta-python       
meta-ruby         = "HEAD:8ab04afbffb4bc5184cfe0655049de6f44269990"
meta-lxde         = "HEAD:59eae5a746ef6cb150bef2a03254d086f2eae0fb"
meta-browser      = "HEAD:e114d625d4bd23a52cc1108a45d96ffd8dc0ab7f"
meta-fsl-arm      = "HEAD:c9e576bdae8c481f5a836531c7865fe8b8a5a36f"
meta-fsl-arm-extra = "HEAD:dd074c47af53948041f6c5671e519fbf815b0980"
meta-fsl-demos    = "HEAD:8bffde8d803dd2362fbded79781ce084d723b048"
meta-jetson-tk1   = "HEAD:400dae80d29bb45b4886cf7f048c6f7b12cb0b01"
meta-qt5          = "mywork:a8d4dafdfde812e403315d53b2a981d12bd49f04"
meta              = "HEAD:1f4bfa33073584c25396d74f3929f263f3df188b"

NOTE: Preparing RunQueue
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: Function failed: do_configure (log file is located at /home/guest/oe-core/build/out-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.5.1+gitAUTOINC+5afc431323-r0/temp/log.do_configure.15602)
ERROR: Logfile of failure stored in: /home/guest/oe-core/build/out-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.5.1+gitAUTOINC+5afc431323-r0/temp/log.do_configure.15602
Log data follows:
| DEBUG: Executing python function sysroot_cleansstate
| DEBUG: Python function sysroot_cleansstate finished
| DEBUG: Executing shell function qmake5_base_preconfigure
| DEBUG: Shell function qmake5_base_preconfigure finished
| DEBUG: Executing shell function do_configure
| 
| This is the Qt Open Source Edition.
| 
| You are licensed to use this software under the terms of
| the Lesser GNU General Public License (LGPL) versions 2.1.
| You are also licensed to use this software under the terms of
| the GNU Lesser General Public License (LGPL) versions 3.
| 
| You have already accepted the terms of the Open Source license.
| 
| /home/guest/oe-core/build/out-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.5.1+gitAUTOINC+5afc431323-r0/git/configure: 1: /home/guest/oe-core/build/out-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.5.1+gitAUTOINC+5afc431323-r0/git/configure: /home/guest/oe-core/build/out-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.5.1+gitAUTOINC+5afc431323-r0/git/config.tests/unix/makeabs: not found
| Performing shadow build...
| Preparing build tree...
| WARNING: Unable to find file /home/guest/oe-core/build/out-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.5.1+gitAUTOINC+5afc431323-r0/git/mkspecs/linux-oe-g++/../oe-device-extra.pri
| WARNING: Unable to find file /home/guest/oe-core/build/out-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.5.1+gitAUTOINC+5afc431323-r0/git/mkspecs/linux-oe-g++/../oe-device-extra.pri
| arm-angstrom-linux-gnueabi-g++ -march=armv7-a -mthumb -mthumb-interwork -mfloat-abi=hard -mfpu=neon --sysroot=/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7 -c -fvisibility=hidden fvisibility.c
| Symbol visibility control enabled.
| /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld.gold: error: cannot open crt1.o: No such file or directory
| /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld.gold: error: cannot open crti.o: No such file or directory
| /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld.gold: error: cannot open crtbegin.o: No such file or directory
| /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld.gold: error: cannot open crtend.o: No such file or directory
| /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld.gold: error: cannot open crtn.o: No such file or directory
| /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld.gold: error: cannot find -lgcc
| /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld.gold: error: cannot find -lgcc
| /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld.gold: error: cannot find -lgcc
| /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld.gold: error: cannot find -lgcc
| /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld.gold: error: /home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7/usr/lib/libstdc++.so uses VFP register arguments, output does not
| /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld.gold: error: /home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7/usr/lib/libm.so uses VFP register arguments, output does not
| /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld.gold: error: /home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7/lib/libgcc_s.so.1 uses VFP register arguments, output does not
| /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld.gold: error: /home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7/lib/libc.so.6 uses VFP register arguments, output does not
| /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld.gold: error: /home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7/lib/ld-linux-armhf.so.3 uses VFP register arguments, output does not
| collect2: error: ld returned 1 exit status
| arm-angstrom-linux-gnueabi-g++ -march=armv7-a -mthumb -mthumb-interwork -mfloat-abi=hard -mfpu=neon --sysroot=/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7 -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c
| bsymbolic_functions.c:2:2: error: #error "Symbolic function binding on this architecture may be broken, disabling it (see QTBUG-36129)."
|  #error "Symbolic function binding on this architecture may be broken, disabling it (see QTBUG-36129)."
|   ^
| Symbolic function binding disabled.
| DEFAULT_INCDIRS="/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7/usr/include/c++/5.2.1
| /home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7/usr/include/c++/5.2.1/arm-angstrom-linux-gnueabi
| /home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7/usr/include/c++/5.2.1/backward
| /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/lib/arm-angstrom-linux-gnueabi/gcc/arm-angstrom-linux-gnueabi/5.2.1/include
| /home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7/usr/lib/gcc/arm-angstrom-linux-gnueabi/5.2.1/include
| /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/lib/arm-angstrom-linux-gnueabi/gcc/arm-angstrom-linux-gnueabi/5.2.1/include-fixed
| /home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7/usr/include
| "
| DEFAULT_LIBDIRS="/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7/usr/lib
| /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/lib/arm-angstrom-linux-gnueabi/gcc/arm-angstrom-linux-gnueabi/5.2.1
| /home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7/lib
| /home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7/usr/lib/arm-angstrom-linux-gnueabi/5.2.1
| "
| <srcbase> = /home/guest/oe-core/build/out-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.5.1+gitAUTOINC+5afc431323-r0/git
| <outbase> = /home/guest/oe-core/build/out-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.5.1+gitAUTOINC+5afc431323-r0/build
| QtCore: created fwd-include header(s) for <srcbase>/src/corelib/animation/ { qabstractanimation.h (1), qabstractanimation_p.h (1), qanimationgroup.h (1), qanimationgroup_p.h (1), qparallelanimationgroup.h (1), qparallelanimationgroup_p.h (1), qpauseanimation.h (1), qpropertyanimation.h (1), qpropertyanimation_p.h (1), qsequentialanimationgroup.h (1), qsequentialanimationgroup_p.h (1), qvariantanimation.h (1), qvariantanimation_p.h (1) }
| QtCore: created fwd-include header(s) for <srcbase>/src/corelib/arch/ { qatomic_armv5.h (1), qatomic_armv6.h (1), qatomic_armv7.h (1), qatomic_bootstrap.h (1), qatomic_cxx11.h (1), qatomic_gcc.h (1), qatomic_ia64.h (1), qatomic_mips.h (1), qatomic_msvc.h (1), qatomic_unix.h (1), qatomic_x86.h (1) }
| QtCore: created fwd-include header(s) for <srcbase>/src/corelib/codecs/ { cp949codetbl_p.h (1), qbig5codec_p.h (1), qeucjpcodec_p.h (1), qeuckrcodec_p.h (1), qgb18030codec_p.h (1), qiconvcodec_p.h (1), qicucodec_p.h (1), qisciicodec_p.h (1), qjiscodec_p.h (1), qjpunicode_p.h (1), qlatincodec_p.h (1), qsimplecodec_p.h (1), qsjiscodec_p.h (1), qtextcodec.h (1), qtextcodec_p.h (1), qtsciicodec_p.h (1), qutfcodec_p.h (1), qwindowscodec_p.h (1) }
| QtCore: created fwd-include header(s) for <srcbase>/src/corelib/global/ { qcompilerdetection.h (1), qconfig-dist.h (1), qconfig-large.h (1), qconfig-medium.h (1), qconfig-minimal.h (1), qconfig-nacl.h (1), qconfig-small.h (1), qendian.h (1), qflags.h (1), qglobal.h (1), qglobalstatic.h (1), qhooks_p.h (1), qisenum.h (1), qlibraryinfo.h (1), qlogging.h (1), qnamespace.h (1), qnumeric.h (1), qnumeric_p.h (1), qprocessordetection.h (1), qsysinfo.h (1), qsystemdetection.h (1), qt_pch.h (1), qt_windows.h (1), qtypeinfo.h (1), qtypetraits.h (1) }
| QtCore: created fwd-include header(s) for <srcbase>/src/corelib/io/ { qabstractfileengine_p.h (1), qbuffer.h (1), qdatastream.h (1), qdatastream_p.h (1), qdataurl_p.h (1), qdebug.h (1), qdebug_p.h (1), qdir.h (1), qdir_p.h (1), qdiriterator.h (1), qfile.h (1), qfile_p.h (1), qfiledevice.h (1), qfiledevice_p.h (1), qfileinfo.h (1), qfileinfo_p.h (1), qfileselector.h (1), qfileselector_p.h (1), qfilesystemengine_p.h (1), qfilesystementry_p.h (1), qfilesystemiterator_p.h (1), qfilesystemmetadata_p.h (1), qfilesystemwatcher.h (1), qfilesystemwatcher_fsevents_p.h (1), qfilesystemwatcher_inotify_p.h (1), qfilesystemwatcher_kqueue_p.h (1), qfilesystemwatcher_p.h (1), qfilesystemwatcher_polling_p.h (1), qfilesystemwatcher_win_p.h (1), qfsfileengine_iterator_p.h (1), qfsfileengine_p.h (1), qiodevice.h (1), qiodevice_p.h (1), qipaddress_p.h (1), qlockfile.h (1), qlockfile_p.h (1), qloggingcategory.h (1), qloggingregistry_p.h (1), qnoncontiguousbytedevice_p.h (1), qprocess.h (1), qprocess_p.h (1), qresource.h (1), qresource_iterator_p.h (1), qresource_p.h (1), qsavefile.h (1), qsavefile_p.h (1), qsettings.h (1), qsettings_p.h (1), qstandardpaths.h (1), qstorageinfo.h (1), qstorageinfo_p.h (1), qtemporarydir.h (1), qtemporaryfile.h (1), qtemporaryfile_p.h (1), qtextstream.h (1), qtextstream_p.h (1), qtldurl_p.h (1), qurl.h (1), qurl_p.h (1), qurlquery.h (1), qurltlds_p.h (1), qwindowspipereader_p.h (1), qwindowspipewriter_p.h (1), qwinoverlappedionotifier_p.h (1) }
| QtCore: created fwd-include header(s) for <srcbase>/src/corelib/itemmodels/ { qabstractitemmodel.h (1), qabstractitemmodel_p.h (1), qabstractproxymodel.h (1), qabstractproxymodel_p.h (1), qidentityproxymodel.h (1), qitemselectionmodel.h (1), qitemselectionmodel_p.h (1), qsortfilterproxymodel.h (1), qstringlistmodel.h (1) }
| QtCore: created fwd-include header(s) for <srcbase>/src/corelib/json/ { qjson_p.h (1), qjsonarray.h (1), qjsondocument.h (1), qjsonobject.h (1), qjsonparser_p.h (1), qjsonvalue.h (1), qjsonwriter_p.h (1) }
| QtCore: created fwd-include header(s) for <srcbase>/src/corelib/kernel/ { qabstracteventdispatcher.h (1), qabstracteventdispatcher_p.h (1), qabstractnativeeventfilter.h (1), qbasictimer.h (1), qcore_mac_p.h (1), qcore_unix_p.h (1), qcoreapplication.h (1), qcoreapplication_p.h (1), qcorecmdlineargs_p.h (1), qcoreevent.h (1), qcoreglobaldata_p.h (1), qcrashhandler_p.h (1), qeventdispatcher_blackberry_p.h (1), qeventdispatcher_glib_p.h (1), qeventdispatcher_unix_p.h (1), qeventdispatcher_win_p.h (1), qeventdispatcher_winrt_p.h (1), qeventloop.h (1), qeventloop_p.h (1), qfunctions_nacl.h (1), qfunctions_p.h (1), qfunctions_vxworks.h (1), qfunctions_wince.h (1), qfunctions_winrt.h (1), qjni_p.h (1), qjnihelpers_p.h (1), qmath.h (1), qmetaobject.h (1), qmetaobject_moc_p.h (1), qmetaobject_p.h (1), qmetaobjectbuilder_p.h (1), qmetatype.h (1), qmetatype_p.h (1), qmetatypeswitcher_p.h (1), qmimedata.h (1), qobject.h (1), qobject_impl.h (1), qobject_p.h (1), qobjectcleanuphandler.h (1), qobjectdefs.h (1), qobjectdefs_impl.h (1), qpointer.h (1), qppsattribute_p.h (1), qppsattributeprivate_p.h (1), qppsobject_p.h (1), qppsobjectprivate_p.h (1), qsharedmemory.h (1), qsharedmemory_p.h (1), qsignalmapper.h (1), qsocketnotifier.h (1), qsystemerror_p.h (1), qsystemsemaphore.h (1), qsystemsemaphore_p.h (1), qtimer.h (1), qtimerinfo_unix_p.h (1), qtranslator.h (1), qtranslator_p.h (1), qvariant.h (1), qvariant_p.h (1), qwineventnotifier.h (1) }
| QtCore: created fwd-include header(s) for <srcbase>/src/corelib/mimetypes/ { qmimedatabase.h (1), qmimedatabase_p.h (1), qmimeglobpattern_p.h (1), qmimemagicrule_p.h (1), qmimemagicrulematcher_p.h (1), qmimeprovider_p.h (1), qmimetype.h (1), qmimetype_p.h (1), qmimetypeparser_p.h (1) }
| QtCore: created fwd-include header(s) for <srcbase>/src/corelib/plugin/ { qelfparser_p.h (1), qfactoryinterface.h (1), qfactoryloader_p.h (1), qlibrary.h (1), qlibrary_p.h (1), qmachparser_p.h (1), qplugin.h (1), qpluginloader.h (1), qsystemlibrary_p.h (1), quuid.h (1) }
| QtCore: created fwd-include header(s) for <srcbase>/src/corelib/statemachine/ { qabstractstate.h (1), qabstractstate_p.h (1), qabstracttransition.h (1), qabstracttransition_p.h (1), qeventtransition.h (1), qeventtransition_p.h (1), qfinalstate.h (1), qhistorystate.h (1), qhistorystate_p.h (1), qsignaleventgenerator_p.h (1), qsignaltransition.h (1), qsignaltransition_p.h (1), qstate.h (1), qstate_p.h (1), qstatemachine.h (1), qstatemachine_p.h (1) }
| QtCore: created fwd-include header(s) for <srcbase>/src/corelib/thread/ { qatomic.h (1), qbasicatomic.h (1), qexception.h (1), qfuture.h (1), qfutureinterface.h (1), qfutureinterface_p.h (1), qfuturesynchronizer.h (1), qfuturewatcher.h (1), qfuturewatcher_p.h (1), qgenericatomic.h (1), qmutex.h (1), qmutex_p.h (1), qmutexpool_p.h (1), qorderedmutexlocker_p.h (1), qreadwritelock.h (1), qreadwritelock_p.h (1), qresultstore.h (1), qrunnable.h (1), qsemaphore.h (1), qthread.h (1), qthread_p.h (1), qthreadpool.h (1), qthreadpool_p.h (1), qthreadstorage.h (1), qwaitcondition.h (1) }
| QtCore: created fwd-include header(s) for <srcbase>/src/corelib/tools/ { qalgorithms.h (1), qarraydata.h (1), qarraydataops.h (1), qarraydatapointer.h (1), qbitarray.h (1), qbytearray.h (1), qbytearraylist.h (1), qbytearraymatcher.h (1), qbytedata_p.h (1), qcache.h (1), qchar.h (1), qcollator.h (1), qcollator_p.h (1), qcommandlineoption.h (1), qcommandlineparser.h (1), qcontainerfwd.h (1), qcontiguouscache.h (1), qcryptographichash.h (1), qdatetime.h (1), qdatetime_p.h (1), qdatetimeparser_p.h (1), qeasingcurve.h (1), qelapsedtimer.h (1), qfreelist_p.h (1), qharfbuzz_p.h (1), qhash.h (1), qiterator.h (1), qline.h (1), qlinkedlist.h (1), qlist.h (1), qlocale.h (1), qlocale_blackberry.h (1), qlocale_data_p.h (1), qlocale_p.h (1), qlocale_tools_p.h (1), qmap.h (1), qmargins.h (1), qmessageauthenticationcode.h (1), qpair.h (1), qpodlist_p.h (1), qpoint.h (1), qqueue.h (1), qrect.h (1), qrefcount.h (1), qregexp.h (1), qregularexpression.h (1), qringbuffer_p.h (1), qscopedpointer.h (1), qscopedpointer_p.h (1), qscopedvaluerollback.h (1), qset.h (1), qshareddata.h (1), qsharedpointer.h (1), qsharedpointer_impl.h (1), qsimd_p.h (1), qsize.h (1), qstack.h (1), qstring.h (1), qstringalgorithms_p.h (1), qstringbuilder.h (1), qstringiterator_p.h (1), qstringlist.h (1), qstringmatcher.h (1), qtextboundaryfinder.h (1), qtimeline.h (1), qtimezone.h (1), qtimezoneprivate_data_p.h (1), qtimezoneprivate_p.h (1), qtools_p.h (1), qunicodetables_p.h (1), qunicodetools_p.h (1), qvarlengtharray.h (1), qvector.h (1), qversionnumber_p.h (1) }
| QtCore: created fwd-include header(s) for <srcbase>/src/corelib/xml/ { qxmlstream.h (1), qxmlstream_p.h (1), qxmlutils_p.h (1) }
| Running configuration tests...
| Found pkg-config from $PATH: /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/bin/pkg-config
| Determining architecture... ()
| arm-angstrom-linux-gnueabi-g++  -march=armv7-a -mthumb  -mthumb-interwork -mfloat-abi=hard -mfpu=neon --sysroot=/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7 -c -pipe  -O2 -pipe -g -feliminate-unused-debug-types -fvisibility-inlines-hidden -g -Wall -W -fPIC  -I../../../git/config.tests/arch -I. -I../../../git/mkspecs/linux-oe-g++ -o arch.o ../../../git/config.tests/arch/arch.cpp
| arm-angstrom-linux-gnueabi-g++  -march=armv7-a -mthumb  -mthumb-interwork -mfloat-abi=hard -mfpu=neon --sysroot=/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o arch arch.o
|     Found architecture in binary
| CFG_CPUFEATURES=" neon"
| CFG_ARCH="arm"
| Determining architecture... ()
| arm-angstrom-linux-gnueabi-g++  -march=armv7-a -mthumb  -mthumb-interwork -mfloat-abi=hard -mfpu=neon --sysroot=/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7 -c -pipe  -O2 -pipe -g -feliminate-unused-debug-types -fvisibility-inlines-hidden -g -Wall -W -fPIC  -I../../../git/config.tests/arch -I. -I/home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/lib/qt5/mkspecs/linux-oe-g++ -o arch.o ../../../git/config.tests/arch/arch.cpp
| arm-angstrom-linux-gnueabi-g++  -march=armv7-a -mthumb  -mthumb-interwork -mfloat-abi=hard -mfpu=neon --sysroot=/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o arch arch.o
|     Found architecture in binary
| CFG_HOST_CPUFEATURES=" neon"
| CFG_HOST_ARCH="arm"
| System architecture: 'arm'
| Host architecture: 'arm'
| C++11 auto-detection... ()
| arm-angstrom-linux-gnueabi-g++  -march=armv7-a -mthumb  -mthumb-interwork -mfloat-abi=hard -mfpu=neon --sysroot=/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7 -c -pipe  -O2 -pipe -g -feliminate-unused-debug-types -fvisibility-inlines-hidden -O2 -std=c++0x -Wall -W -fPIC  -I../../../../git/config.tests/common/c++11 -I. -I../../../../git/mkspecs/linux-oe-g++ -o c++11.o ../../../../git/config.tests/common/c++11/c++11.cpp
| arm-angstrom-linux-gnueabi-g++  -march=armv7-a -mthumb  -mthumb-interwork -mfloat-abi=hard -mfpu=neon --sysroot=/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-O1 -o c++11 c++11.o
| C++11 enabled.
| sse2 auto-detection... ()
| arm-angstrom-linux-gnueabi-g++  -march=armv7-a -mthumb  -mthumb-interwork -mfloat-abi=hard -mfpu=neon --sysroot=/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7 -c -pipe  -O2 -pipe -g -feliminate-unused-debug-types -fvisibility-inlines-hidden -msse2 -g -Wall -W -fPIC  -I../../../../git/config.tests/common/sse2 -I. -I../../../../git/mkspecs/linux-oe-g++ -o sse2.o ../../../../git/config.tests/common/sse2/sse2.cpp
| arm-angstrom-linux-gnueabi-g++: error: unrecognized command line option '-msse2'
| make: *** [sse2.o] Error 1
| sse2 disabled.
| ipc_sysv auto-detection... ()
| arm-angstrom-linux-gnueabi-g++  -march=armv7-a -mthumb  -mthumb-interwork -mfloat-abi=hard -mfpu=neon --sysroot=/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7 -c -pipe  -O2 -pipe -g -feliminate-unused-debug-types -fvisibility-inlines-hidden -O2 -Wall -W -fPIC  -I../../../../git/config.tests/unix/ipc_sysv -I. -I../../../../git/mkspecs/linux-oe-g++ -o ipc.o ../../../../git/config.tests/unix/ipc_sysv/ipc.cpp
| arm-angstrom-linux-gnueabi-g++  -march=armv7-a -mthumb  -mthumb-interwork -mfloat-abi=hard -mfpu=neon --sysroot=/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-O1 -o ipc_sysv ipc.o
| ipc_sysv enabled.
| PulseAudio auto-detection... ()
| arm-angstrom-linux-gnueabi-g++  -march=armv7-a -mthumb  -mthumb-interwork -mfloat-abi=hard -mfpu=neon --sysroot=/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7 -c -pipe  -O2 -pipe -g -feliminate-unused-debug-types -fvisibility-inlines-hidden -D_REENTRANT -O2 -Wall -W -fPIC  -I../../../../git/config.tests/unix/pulseaudio -I. -I/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7/usr/include/glib-2.0 -I/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7/usr/lib/glib-2.0/include -I../../../../git/mkspecs/linux-oe-g++ -o pulseaudio.o ../../../../git/config.tests/unix/pulseaudio/pulseaudio.cpp
| arm-angstrom-linux-gnueabi-g++  -march=armv7-a -mthumb  -mthumb-interwork -mfloat-abi=hard -mfpu=neon --sysroot=/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-O1 -o pulseaudio pulseaudio.o   -lpulse-mainloop-glib -lpulse -lglib-2.0
| PulseAudio enabled.
| OpenGL auto-detection... ()
| arm-angstrom-linux-gnueabi-g++  -march=armv7-a -mthumb  -mthumb-interwork -mfloat-abi=hard -mfpu=neon --sysroot=/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7 -c -pipe  -O2 -pipe -g -feliminate-unused-debug-types -fvisibility-inlines-hidden -DMESA_EGL_NO_X11_HEADERS -O2 -Wall -W -fPIC  -I../../../../git/config.tests/unix/opengldesktop -I. -I../../../../git/mkspecs/linux-oe-g++ -o opengldesktop.o ../../../../git/config.tests/unix/opengldesktop/opengldesktop.cpp
| arm-angstrom-linux-gnueabi-g++  -march=armv7-a -mthumb  -mthumb-interwork -mfloat-abi=hard -mfpu=neon --sysroot=/home/guest/oe-core/build/out-glibc/sysroots/colibri-imx7 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-O1 -o opengldesktop opengldesktop.o   -lGL
| /home/guest/oe-core/build/out-glibc/sysroots/i686-linux/usr/libexec/arm-angstrom-linux-gnueabi/gcc/arm-angstrom-linux-gnueabi/5.2.1/ld: error: cannot find -lGL
| ../../../../git/config.tests/unix/opengldesktop/opengldesktop.cpp:42: error: undefined reference to 'glBegin'
| ../../../../git/config.tests/unix/opengldesktop/opengldesktop.cpp:43: error: undefined reference to 'glVertex2f'
| ../../../../git/config.tests/unix/opengldesktop/opengldesktop.cpp:44: error: undefined reference to 'glVertex2f'
| ../../../../git/config.tests/unix/opengldesktop/opengldesktop.cpp:45: error: undefined reference to 'glVertex2f'
| ../../../../git/config.tests/unix/opengldesktop/opengldesktop.cpp:46: error: undefined reference to 'glEnd'
| collect2: error: ld returned 1 exit status
| make: *** [opengldesktop] Error 1
| OpenGL disabled.
| The OpenGL functionality test failed!
|  You might need to modify the include and library search paths by editing
|  QMAKE_INCDIR_OPENGL, QMAKE_LIBDIR_OPENGL and QMAKE_LIBS_OPENGL in
|  /home/guest/oe-core/build/out-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.5.1+gitAUTOINC+5afc431323-r0/git/mkspecs/linux-oe-g++.
| WARNING: exit code 1 from a shell command.
| ERROR: Function failed: do_configure (log file is located at /home/guest/oe-core/build/out-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/qtbase/5.5.1+gitAUTOINC+5afc431323-r0/temp/log.do_configure.15602)
ERROR: Task 952 (/home/guest/oe-core/build/../stuff/meta-qt5/recipes-qt/qt5/qtbase_git.bb, do_configure) failed with exit code '1'
NOTE: Tasks Summary: Attempted 3691 tasks of which 3685 didn't need to be rerun and 1 failed.
NOTE: Writing buildhistory
No currently running tasks (3691 of 3745)

Summary: 1 task failed:
  /home/guest/oe-core/build/../stuff/meta-qt5/recipes-qt/qt5/qtbase_git.bb, do_configure
Summary: There was 1 ERROR message shown, returning a non-zero exit code.

And here the related log.

I searched on the forum about this problem but did not find anything.

Any idea about this problem?

Now i’m able to perform the build of console-trdx-image, following this on forum.

Thanks for the update.

Note that the i.MX 7 does not have a GPU, hence OpenGL calls will be software emulated which will be slow…

Qt published an accelerated 2D Renderer, but only in newer Qt versions and under the GPLv3 license.

Update: build was ok but starting Qt5_CinematicExperience follow these errors:

This application failed to start because it could not find or load the Qt platform plugin "xcb".
Available platform plugins are: eglfs, minimal, minimalegl, offscreen.
Reinstalling the application my fix this problem.

Using ‘–platform eglfs’

Could not initialize egl display

Using ‘–platform minimalegl’

Opened display 0x1ada688
Could not initialize egl display

Using '–platform

libpng warning: iCCP: known incorrect sRGB profile                              
libpng warning: iCCP: known incorrect sRGB profile                              
This plugin does not support createPlatformOpenGLContext!                       
Failed to create OpenGL context for format QSurfaceFormat(version 2.0, options Q
Flags(), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSiz
e -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior 2, swapI
nterval 1, profile  0)                              

Using ‘–platform minimal’

libpng warning: iCCP: known incorrect sRGB profile                              
libpng warning: iCCP: known incorrect sRGB profile                              
This plugin does not support createPlatformOpenGLContext!                       
Failed to create OpenGL context for format QSurfaceFormat(version 2.0, options Q
Flags(), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSiz
e -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior 2, swapI
nterval 1, profile  0)                                                          
/usr/bin/Qt5_CinematicExperience: line 4:   562 Aborted                 /usr/sha
re/cinematicexperience-1.0/Qt5_CinematicExperience $*  

Any suggestion?

Well, as @stefan.tx pointed out the i.MX 7 SoC does not support any hardware accelerated OpenGL. While one may be able to run it using software emulated Mesa rendering this will be rather slow. Alternatively you could use the commercial Qt flavour which does come with an optimised non OpenGL solution.

I would have expected that eglfs should at least work software emulated, so I looked into this.

It seems that Mesa dropped fbdev support (see this and this patchset) with the 10.6 release (10.6.3 is the version used with the jethro branches currently). There is a DRM backend, but there is no DRM driver for the display controller used in i.MX 7. Therefor I guess the only way to support software emulated EGL/GLES2 is through X11…

Qt5 (Qml) on non-GPU hardware has always been a hot topic, here is our official stand to it:

  • Qt5 without Qt Quick 2/QML (just Qt Widgets) should work fine and we can help you building such an image (make sure to not include an example which has qtdeclarative in its dependencies).
  • Qt5 with Qt Quick 2/QML on non-GPU hardware has two possible solution
    • Use Software emulated OpenGL (via Mesa). While this might work for a simple Qt Quick based “Hello World” UI, we don’t believe it is a worthwhile solution for a real world use case due to performance reasons… Therefore, at this moment, this scenario is not supported by Toradex. (*)
    • Use the Qt Quick 2D Renderer. Here again are two directions:
      • Since Qt 5.7 the Qt Quick 2D Renderer is available under the GPLv3 Open Source License. The OpenEmbedded built Toradex BSP currently does not support Qt 5.7 hence today this option is not supported… (Note also that the terms of GPLv3 typically means that your application has to be open sourced as well).
      • Use the Qt Company’s commercial offerings Qt for Device Creation. With the Qt 5.7 release Colibri iMX7 is among the supported modules and since 2016-08-23 there are pre-built demo image available through the Qt for Device Creation installer.

So to conclude: Qt5 is supported, either without Qt Quick 2 or through the Qt for Device Creation offerings of the Qt Company.

(*) Out of curiosity how the software OpenGL performs I tried to build a X11 based image with Qt5 and with Software desktop OpenGL (by adding qtbase qtbase-fonts qtbase-plugins cinematicexperience and xserver-xorg xf86-video-fbdev xf86-input-evdev xserver-xorg-extension-glx mesa-driver-swrast xinit xterm openbox mesa-demos). The glxgears demo worked at 50fps and 100% CPU load, but Qt5 Cinematic Experience failed pretty hard with the following error message:

root@colibri-imx7:~# /usr/share/cinematicexperience-1.0/Qt5_CinematicExperience
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
[  593.095205] Alignment trap: not handling instruction f9008a1f at [<74f61c08>]
[  593.102461] Unhandled fault: alignment exception (0x801) at 0x018c4a4c
[  593.108991] pgd = 8897c000
[  593.111749] [018c4a4c] *pgd=8921b831, *pte=8e43a75f, *ppte=8e43ac7f
Bus error

While I think it technically should be possible to get Qt5 on top of a Software emulated OpenGL running, for the above reasons we won’t support such an effort any further.

Thanks a lot!
This is 100% the answer i was looking for.

Right now i’m running Qt 5.7 on the Colibri i.MX7 S and D using the commercial trial license. If you don’t use too much alpha blending stuff it should run very smooth.
But be warned. It ran into some issues using 5.7 for Device Creation:

  • On my Ubuntu, the image to SD Copy process is broken. You have to “dd” by hand.

  • You have to move some files on the created medium. Not sure if it’s my fault. If you get stuck, just ask here.

ProTipp: Wait for Qt 5.8. It should have a much faster 2D renderer because it does partitial screen updates instead of fully double buffered redraws.

Dear Stefan,
you said “Qt5 without Qt Quick 2/QML (just Qt Widgets) should work fine” but you didn’t provide an alternative solution.
I tried to do that but I’m facing to the same problem so I am wondering whether would be really possible to run Qt5 without acceleration in C++ widgets only mode on your Colibri-iMX7.
Thank you.

What do you mean by “facing the same problem”? With a Qt Widget only image you won’t be able to run Qt5_CinematicExperience, so it can’t be the same issue as lucam originally reported…

Qt 5.5 Widgets directly on the Qt LinuxFB platform abstraction indeed seem to work. I compiled the console-trdx-image with the following local.conf:

IMAGE_INSTALL_append = " qtbase qtbase-fonts qtbase-plugins"
PACKAGECONFIG_DISTRO_pn-qtbase = "linuxfb"

Beside the image I compiled the meta-toolchain-qt5 toolchain, installed it on my host, downloaded the Tetrix example form the Qt website (also uploaded it in a github repo) and compiled it with qmake && make.

On the module, I had to select the right platform abstraction, but other than that it seemed to run well:

export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
./tetrix

Btw, my highscore is 2489 :slight_smile:

Yes, sorry.
I mean “Qt5 without Qt Quick 2/QML (just Qt Widgets)” doesn’t work.
Of course I am not building Qt5_CinematicExperience.

Good job Stefan!
I simply missed export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
Your example is eventually working, thanks.
BTW you will need also to set the touchscreen rotation properly:
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=rotate=180

I use the i.MX7D and do not need OpenGL. I have an Qt licence available. The Toradex image and my Qt program runs stable. If I load my Qt program to Boot2Qt it is really smooth but with my customized LXDE Image everything is very slow (but works). What commands or packets do I need to set the commercial Qt solution active?