Hi all,
I'm trying to build Qt 5.4.0 for the i.MX6 and am having some issues right out of the gate with configuration. I have a rootfs built from the FSL Yocto BSP (Dizzy) that I am using. It is an unmodified rootfs built from the fsl-image-multimedia image and contains libraries and headers for GLES2, EGL, GAL, etc.
I am using the 2013.10 Linaro HF toolchain: @gcc-linaro-arm-linux-gnueabihf-4.8-2013.10@
Here is my qmake.conf file (mostly the same as the default one but included flags for OpenGL stuff):
include(../common/linux_device_pre.conf)
EGLFS_PLATFORM_HOOKS_SOURCES = $$PWD/qeglfshooks_imx6.cpp
QMAKE_INCDIR += $$[QT_SYSROOT]/usr/include
QMAKE_LIBDIR += $$[QT_SYSROOT]/usr/lib
QMAKE_INCDIR_OPENGL = $$[QT_SYSROOT]/usr/include/GL
QMAKE_LIBDIR_OPENGL = $$[QT_SYSROOT]/usr/lib
QMAKE_INCDIR_OPENGL_ES2 = $$[QT_SYSROOT]/usr/include/GLES2
QMAKE_LIBDIR_OPENGL_ES2 = $$[QT_SYSROOT]/usr/lib
QMAKE_INCDIR_EGL = $$[QT_SYSROOT]/usr/include/GL
QMAKE_LIBDIR_EGL = $$[QT_SYSROOT]/usr/lib
QMAKE_LIBS_EGL += -lEGL
QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL -lGAL
QMAKE_LIBS_OPENVG += -lOpenVG -lEGL -lGAL
QMAKE_LFLAGS += -Wl,-rpath-link,$$[QT_SYSROOT]/usr/lib
IMX6_CFLAGS = -march=armv7-a -mfpu=neon -mfloat-abi=hard -DLINUX=1 -DEGL_API_FB=1
QMAKE_CFLAGS += $$IMX6_CFLAGS
QMAKE_CXXFLAGS += $$IMX6_CFLAGS
include(../common/linux_arm_device_post.conf)
load(qt_config)
And my configure line:
configure -v -opensource -confirm-license
-device imx6
-device-option CROSS_COMPILE=/opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/bin/arm-linux-gnueabihf-
-no-pch
-no-xcb
-opengl es2
-make libs
-sysroot /projects/client/imx6/rootfs -no-gcc-sysroot
-prefix /opt/qt-5.4.0-imx6
The configuration is failing with the following errors:
OpenGL ES 2.0 auto-detection... ()
/opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/bin/arm-linux-gnueabihf-g++ -c -pipe -march=armv7-a -mfpu=neon -mfloat-abi=hard -DLINUX=1 -DEGL_API_FB=1 -mfloat-abi=softfp -O2 -Wall -W -fPIE -I/opt/qt-everywhere-opensource-src-5.4.0/qtbase/mkspecs/devices/linux-imx6-g++ -I/opt/qt-everywhere-opensource-src-5.4.0/qtbase/config.tests/unix/opengles2 -I/projects/client/imx6/rootfs/usr/include/libdrm -I/projects/client/imx6/rootfs/usr/include/GLES2 -I/projects/client/imx6/rootfs/usr/include -I. -o opengles2.o /opt/qt-everywhere-opensource-src-5.4.0/qtbase/config.tests/unix/opengles2/opengles2.cpp
/opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/bin/arm-linux-gnueabihf-g++ -Wl,-rpath-link,/projects/client/imx6/rootfs/usr/lib -Wl,-O1 -o opengles2 opengles2.o -L/projects/client/imx6/rootfs/usr/lib -lGLESv2 -lEGL -lGAL
/opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/bin/ld: cannot find /lib/libc.so.6
/opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/bin/ld: cannot find /usr/lib/libc_nonshared.a
/opt/ti/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/bin/ld: cannot find /lib/ld-linux-armhf.so.3
collect2: error: ld returned 1 exit status
make: *** [opengles2] Error 1
OpenGL ES 2.0 disabled.
The OpenGL ES 2.0 functionality test failed!
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
/opt/qt-everywhere-opensource-src-5.4.0/qtbase/mkspecs/devices/linux-imx6-g++.
Note that all of those libraries exist in paths that are included on the g++ line:
user@ubuntu:/projects/client/imx6/rootfs$ find . -name "libc.so.6"
./lib/libc.so.6
user@ubuntu:/projects/client/imx6/rootfs$ find . -name "libc_nonshared.a"
./usr/lib/libc_nonshared.a
user@ubuntu:/projects/client/imx6/rootfs$ find . -name "ld-linux-armhf.so.3"
./lib/ld-linux-armhf.so.3
Any ideas?
Nathan,
I've recently encountered something with a similar signature that I'm working to resolve and found this thread. However, the question is still marked as unanswered. Did you ever resolve the issue?
Hi Nathan,
I guess you should remove -no-gcc-sysroot from your configuration line.
lets us know if this works for you.
Regards