Unsolved Unknown module(s) in QT: quick
-
Dear sir,
when l croess compile qt5.7.0 to arm platform, it's show Project ERROR: Unknown module(s) in QT: quick
my compile steps is below:- downloader qt-everywhere-opensource-src-5.7.0.tar.gz
- tar zxvf qt-everywhere-opensource-src-5.7.0.tar.gz & cd qt-everywhere-opensource-src-5.7.0
- vim qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublibQT_QPA_DEFAULT_PLATFORM = linux #eglfs
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-ainclude(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)QMAKE_CC = /data1/liangchuan/Qt/gcc/arm-2014.05/bin/arm-none-linux-gnueabi-gcc
QMAKE_CXX = /data1/liangchuan/Qt/gcc/arm-2014.05/bin/arm-none-linux-gnueabi-g++
QMAKE_LINK = /data1/liangchuan/Qt/gcc/arm-2014.05/bin/arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB = /data1/liangchuan/Qt/gcc/arm-2014.05/bin/arm-none-linux-gnueabi-g++QMAKE_AR = /data1/liangchuan/Qt/gcc/arm-2014.05/bin/arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = /data1/liangchuan/Qt/gcc/arm-2014.05/bin/arm-none-linux-gnueabi-objcopy
QMAKE_NM = /data1/liangchuan/Qt/gcc/arm-2014.05/bin/arm-none-linux-gnueabi-nm -P
QMAKE_STRIP = /data1/liangchuan/Qt/gcc/arm-2014.05/bin/arm-none-linux-gnueabi-strip
load(qt_config)- vim build.sh
#!/bin/sh
./configure
-v
-prefix /opt/qt5.7.0
-release
-opensource
-make libs
-xplatform linux-arm-gnueabi-g++
-optimized-qmake
-pch
-qt-sql-sqlite
-qt-libjpeg
-qt-zlib
-no-opengl
-skip qt3d
-skip qtcanvas3d
-skip qtpurchasing
-no-sse2
-no-openssl
-no-nis
-no-cups
-no-glib
-no-iconv
-nomake tools
-skip qtvirtualkeyboard
-I/opt/tslib1.4/include
-L/opt/tslib1.4/lib
exit
5. chmod 777 build.sh & ./build.sh
6. make & sudo make installwhen run make install, it'show Project ERROR: Unknown module(s) in QT: quick.
l add "-opengl es2" to build.sh file and then run, but it's show
compilation terminated.
make: *** [opengles2.o] error 1
OpenGL ES 2.0 disabled.
The OpenGL ES 2.0 functionality test failed!
Use of pkg-config is not enabled, maybe you want to pass -pkg-config?
You might need to modify the include and library search paths by editing
QMAKE_INCDIR_OPENGL_ES2, QMAKE_LIBDIR_OPENGL_ES2 and QMAKE_LIBS_OPENGL_ES2 in
/data1/liangchuan/Qt/qt/qt-everywhere-opensource-src-5.7.0/qtbase/mkspecs/linux-arm-gnueabi-g++.l add QMAKE_INCDIR_OPENGL_ES2, QMAKE_LIBDIR_OPENGL_ES2 and QMAKE_LIBS_OPENGL_ES2 in
/data1/liangchuan/Qt/qt/qt-everywhere-opensource-src-5.7.0/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublibQT_QPA_DEFAULT_PLATFORM = linux #eglfs
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-ainclude(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)QT_QPA_DEFAULT_PLATFORM = eglfs
QT_SYSROOT =/data1/liangchuan/Qt/qt/qt-everywhere-opensource-src-5.7.0
QMAKE_INCDIR_EGL = $$[QT_SYSROOT]/usr/include:/usr/arm-linux-gnueabi/include/:/data1/liangchuan/Qt/down/opengl/usr/include/
QMAKE_LIBDIR_EGL = $$[QT_SYSROOT]/usr/lib:/usr/arm-linux-gnueabi/lib/:/usr/lib/x86_64-linux-gnu/:/data1/liangchuan/Qt/down/opengl/usr/lib/
QMAKE_INCDIR_OPENGL = $${QMAKE_INCDIR_EGL}
QMAKE_LIBDIR_OPENGL = $${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 = -lGLESv2 $${QMAKE_LIBS_EGL}
QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $${QMAKE_LIBS_EGL}
QMAKE_LIBS_OPENVG = -lOpenVG $${QMAKE_LIBS_EGL}QMAKE_CC = /data1/liangchuan/Qt/gcc/arm-2014.05/bin/arm-none-linux-gnueabi-gcc
QMAKE_CXX = /data1/liangchuan/Qt/gcc/arm-2014.05/bin/arm-none-linux-gnueabi-g++
QMAKE_LINK = /data1/liangchuan/Qt/gcc/arm-2014.05/bin/arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB = /data1/liangchuan/Qt/gcc/arm-2014.05/bin/arm-none-linux-gnueabi-g++QMAKE_AR = /data1/liangchuan/Qt/gcc/arm-2014.05/bin/arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = /data1/liangchuan/Qt/gcc/arm-2014.05/bin/arm-none-linux-gnueabi-objcopy
QMAKE_NM = /data1/liangchuan/Qt/gcc/arm-2014.05/bin/arm-none-linux-gnueabi-nm -P
QMAKE_STRIP = /data1/liangchuan/Qt/gcc/arm-2014.05/bin/arm-none-linux-gnueabi-strip
load(qt_config)but it's still show
OpenGL ES 2.0 disabled.
The OpenGL ES 2.0 functionality test failed!
Use of pkg-config is not enabled, maybe you want to pass -pkg-config?
You might need to modify the include and library search paths by editing
QMAKE_INCDIR_OPENGL_ES2, QMAKE_LIBDIR_OPENGL_ES2 and QMAKE_LIBS_OPENGL_ES2 in
/data1/liangchuan/Qt/qt/qt-everywhere-opensource-src-5.7.0/qtbase/mkspecs/linux-arm-gnueabi-g++.pls help me to solve this error. thx
-
@junzhang If you need OpenGL ES 2.0 then you need to install OpenGL ES 2.0 libs and header in your sysroot.
-
@jsulm
what's your meaning of "sysroot"? l do these steps in computer and system is ubuntu 14.04 LTS -
@junzhang If you're cross-compiling then you usually have a sysroot which is basically target device file system containing all needed libraries and header files. I'm wondering how you can cross compile Qt without a sysroot? configure accepts -sysroot parameter to specify the path to the sysroot.
-
@jsulm
there is no GLES2 in my sysroot,liangchuan@user-hojy:~/code/mdm9607-le-1-0_apps_proc/apps_proc/oe-core/build/tmp-glibc/sysroots/mdm9607/usr/include$ ls
acdbloader byteswap.h db.h fnmatch.h hy_sys_log.h libnfnetlink mcm_atcop_v01.h mtd_utils pcap.h router_api.h sysexits.h urcu-qsbr.h
acdbmapper bzlib.h dbm.h form.h iconv.h libnl3 mcm_client.h nc_tparm.h pcap-namedb.h rpc syslog.h ustat.h
acdbrtac c++ dbus-1.0 fpu_control.h ieee754.h libopkg mcm_client_v01.h ncurses_dll.h pixelflinger rpcsvc target.h utime.h
adiertac check.h device_sdk.h fstab.h ifaddrs.h libsmartcols mcm_common_v01.h ncurses.h poll.h sched.h tar.h utmp.h
aio.h check_stdint.h device_ui.h fts.h initreq.h libxml2 mcm_constants.h ndbm.h pppd scsi telephony utmpx.h
aliases.h comdef.h diag ftw.h inttypes.h limits.h mcm_data_srv_mgr_v01.h net printf.h search.h termcap.h uuid
alloca.h com_err.h dirent.h garden-test-interfaces iwlib.h link.h mcm_data_v01.h netash protocols semaphore.h term_entry.h values.h
alsa-intf common_log.h dlfcn.h gawkapi.h IzatAdapterBase.h linux mcm_dm_v01.h netatalk psm_client.h setjmp.h term.h video
android complex.h drm _G_config.h IzatApiBase.h locale.h mcm_ipc.h netax25 pthread.h sgtty.h termio.h wait.h
a.out.h configdb dsutils gconv.h IzatApiRpc.h LocApiProxy.h mcm_loc_srv_mgr_v01.h netdb.h pty.h shadow.h termios.h wchar.h
argp.h config.h e2p gdbm IzatApiV02.h location-geofence mcm_loc_v01.h neteconet pugixml signal.h tgmath.h wctype.h
argz.h cpio.h elf.h gdbm.h izat-core location-service mcm_mobileap_srv_mgr_v01.h netinet pwd.h sound thread_db.h wifi_api.h
ar.h crypt.h endian.h geofence.h l2tp loc-hal mcm_mobileap_v01.h netipx python2.7 spawn.h tic.h Wiper.h
armasm.h crypto envz.h getopt.h langinfo.h loc-hal-test-shim mcm_nw_v01.h netiucv qcacld sqlite3ext.h time.h wireless.h
arpa ctype.h err.h gettext-po.h lastlog.h loc-mcm-qmi-test-shim mcm_service_object_v01.h netpacket qmi sqlite3.h ttyent.h wordexp.h
asm cursesapp.h errno.h gio-unix-2.0 LBSAdapterBase.h loc-mcm-test-shim mcm_sim_v01.h netrom qmi-client-helper ss uapi wpa_ctrl.h
asm-generic cursesf.h error.h glib-2.0 LBSApiBase.h loc-mcm-type-conv mcm_sms_v01.h netrose qmi-framework stab.h uchar.h xen
assert.h curses.h et glibc-locale-internal-armv7a-vfp-neon-oe-linux-gnueabi LBSApiRpc.h loc-pla mcm_voice_v01.h nfs qsocket.h stdc-predef.h ucontext.h xlocale.h
attr cursesm.h eti.h glibc-scripts-internal-armv7a-vfp-neon-oe-linux-gnueabi LBSApiV02.h loc-stub memory.h nl_types.h qsocket_ipcr.h stdint.h ulimit.h xmllib
audcal cursesp.h etip.h glob.h lbs-core loc-vzw menu.h nss.h quota stdio_ext.h unctrl.h xtables.h
audioalsa cursesw.h execinfo.h gnu LBSProxy.h loc-xtra mifi_sdk obstack.h rdma stdio.h unistd.h zconf.h
avahi-client cursslk.h expat_external.h gnu-versions.h libdaemon log_manager misc openssl readline stdlib.h urcu zlib.h
avahi-common customer.h expat.h grp.h libgen.h lttng mntent.h openvpn_api.h re_comp.h string.h urcu-bp.h
avahi-core cutils ext2fs gshadow.h libintl.h lzo monetary.h package_api.h recovery stringl.h urcu-call-rcu.h
avahi-glib data fcntl.h hardware libio.h malloc.h mqueue.h panel.h regex.h strings.h urcu-defer.h
avahi-gobject data-oss features.h hy_cutils libiptc math.h msm_bus_test.h paths.h regexp.h stropts.h urcu-flavor.h
bits db60 fenv.h hyfilelog.h libmount mcheck.h msm_ipc.h pcap resolv.h sys urcu.h
blkid db_cxx.h fmtmsg.h hylog.h libnetfilter_conntrack mcm_atcop_srv_mgr_v01.h mtd pcap-bpf.h rex.h syscall.h urcu-pointer.hso, Did l install it by cross compile opengl es2?
-
@junzhang How to install headers/libs depends on the target system: is it a Linux distribution with packet management (like Raspbian for RPi)?
-
@jsulm
the headers/libs distribution by linux, -
@junzhang Then install the needed packages
-
@jsulm
you mean to install OpenGL ES2.0 packages? -
@junzhang Yes, especially OpenGL ES2.0 dev packages containing header files.
-
@jsulm
thx, l have install OpenGL ES2.0, but l add
QMAKE_INCDIR_OPENGL, QMAKE_LIBDIR_OPENGL and QMAKE_LIBS_OPENGL in
/data1/liangchuan/Qt/qt/qt5.7/temp/qt-everywhere-opensource-src-5.7.0/qtbase/mkspecs/linux-arm-gnueabi-g++.
like this:
QMAKE_INCDIR_EGL = $$[QT_SYSROOT]/usr/include:/usr/arm-linux-gnueabi/include/:/data1/liangchuan/Qt/down/opengl/usr/include/
QMAKE_LIBDIR_EGL = $$[QT_SYSROOT]/usr/lib:/usr/arm-linux-gnueabi/lib/:/usr/lib/x86_64-linux-gnu/:/data1/liangchuan/Qt/down/opengl/usr/lib/
QMAKE_INCDIR_OPENGL = $${QMAKE_INCDIR_EGL}
QMAKE_LIBDIR_OPENGL = $${QMAKE_LIBDIR_EGL}but it's still compile error, the log is below
cross-compiling or use -pkg-config to override this test.
checking for C++11... yes.
checking for C++14... no.
checking for default C++ standard edition... yes.
checking for 64-bit std::atomic... yes.
checking for sse2... no.
checking for ipc_sysv... yes.
checking for zlib... no.
checking for mtdev... no.
checking for libjpeg... no.
checking for libpng... no.
checking for libdl... yes.
checking for DB2... no.
checking for InterBase... no.
checking for MySQL (thread-safe)... no.
checking for MySQL (thread-unsafe)... no.
checking for OCI... no.
checking for ODBC... no.
checking for iODBC... no.
checking for PostgreSQL... no.
checking for SQLite2... no.
checking for TDS... no.
checking for NIS... yes.
checking for Cups... no.
checking for POSIX iconv... yes.
checking for D-Bus... no.
checking for libproxy... no.
checking for Glib... no.
checking for ICU... no.
checking for PulseAudio... no.
checking for OpenGL... no.
checking for OpenGL ES 2.0... no.
All the OpenGL functionality tests 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
/data1/liangchuan/Qt/qt/qt5.7/temp/qt-everywhere-opensource-src-5.7.0/qtbase/mkspecs/linux-arm-gnueabi-g++.
liangchuan@user-hojy:~/Qt/qt/qt5.7/temp/qt-everywhere-opensource-src-5.7.0$ clearhow can l fix this error ?
-
@junzhang Why do you set all these QMAKE variables? It shouldn't be needed. Just specify the path to the sysroot using -sysroot parameter (see http://wiki.qt.io/RaspberryPi).
Did you install OpenGL ES2.0 for your TARGET device (in the sysroot)?
Call configure with additional -v parameter, then you will see what exactly is missing.