Qt World Summit: Register Today!

Qt5 on Beaglebone Black with OpenGL

  • Hey all,

    I've been googling around and searching for about 2 days now with no luck.

    I'm trying to cross-compile Qt5 (5.3.1 or 5.2.0) for the Beaglebone Black and get Quick 2.0 and Qt Quick Controls working (so I need OpenGL). So far I haven't been able to find any good sources to walk me through this process.

    I'm using a "Chipsee":http://www.chipsee.com/product/evm/beagle/beaglebone-black-expansion-capacitive.html?___store=english&___from_store=default cape to have an LCD and capacitive touch screen with it. Chipsee gives me several prebuilt images, including a Debian, Angstrom, Android, and LinuxEZSDK images. It looks like the linuxEZSDK and Angstrom images come with all the OpenGL libraries pre-loaded. The LinuxEZSDK comes pre-configured with everything for Qt, but it's Qt4.8. You can find their repo of images "here":http://www.chipsee.com/upload/BBB/.

    Right now I've been working with the LinuxEZSDK image to try and build Qt5 from source and get it on there. I downloaded the "linaro toolchain":https://launchpad.net/linaro-toolchain-binaries/trunk/2013.04/+download/gcc-linaro-arm-linux-gnueabihf-4.8-2013.04-20130417_linux.tar.xz to use for the cross compile. I edited the 5.3.1 source following "this tutorial":http://armsdr.blogspot.com/2014/01/bare-metal-qt-52-on-beaglebone-black_10.html to setup the build for the cross-compile. If I follow that tutorial to a T, it works fine. But if I try and configure using OpenGL by running the following configure script:

    @../qt-everywhere-opensource-src-5.3.1/configure -v -opensource -confirm-license -no-pch -no-opengl -opengl es2 -make libs -device linux-beaglebone-g++ -xplatform linux-arm-gnueabihf-g++ -device-option CROSS_COMPILE=/usr/local/linaro/bin/arm-linux-gnueabihf- -sysroot /media/jay/rootfs -no-gcc-sysroot -prefix /opt/qt5@

    I mounted the SD card that countains the LinuxEZSDK in order to find the OpenGL drivers and set the sysroot to /media/jay/rootfs, which is the root of the OS. Configuring that gives me the following error:

    @OpenGL ES 2.x auto-detection... ()
    /usr/local/linaro/bin/arm-linux-gnueabihf-g++ -c -pipe -O2 -Wall -W -fPIE -I/home/jay/qt-everywhere-opensource-src-5.3.1/qtbase/mkspecs/linux-arm-gnueabihf-g++ -I/home/jay/qt-everywhere-opensource-src-5.3.1/qtbase/config.tests/unix/opengles2 -I. -o opengles2.o /home/jay/qt-everywhere-opensource-src-5.3.1/qtbase/config.tests/unix/opengles2/opengles2.cpp
    /home/jay/qt-everywhere-opensource-src-5.3.1/qtbase/config.tests/unix/opengles2/opengles2.cpp:45:25: fatal error: GLES2/gl2.h: No such file or directory
    #include <GLES2/gl2.h>
    compilation terminated.
    make: *** [opengles2.o] Error 1
    OpenGL ES 2.x disabled.
    The OpenGL ES 2.0 functionality test failed!
    You might need to modify the include and library search paths by editing

    I even tried modifying the qmake.conf at /qtbase/mkspecs/linux-arm-gnueabihf-g++ to include the following:

    @QMAKE_INCDIR_OPENGL += /media/jay/rootfs/usr/include
    QMAKE_LIBDIR_OPENGL += /media/jay/rootfs/usr/lib

    But that resulted in the same error.

    Does anyone have any ideas how I can get this cross compiled for the Beaglebone with support for Qt Quick 2 and Qt Quick Controls?


  • Hi,

    Have you confirmed that your beaglebone image includes the GLES2/gl2.h file?

    If so, check your QMAKE_INCDIR_OPENGL path, perhaps your missing the final directory?

    Similar to this (for another embedded)

    @QMAKE_INCDIR_EGL = $${QMAKE_PATH}/usr/include/EGL
    QMAKE_LIBDIR_OPENGL_ES2 = $${QMAKE_PATH}/cubie-rootfs/usr/lib@

Log in to reply