Qt Opengl for BeagleBone Black
-
Hi all,
I'm trying to crosscompile Qt for BBB using Qt 5.15.6 and latest Debian 10.13 on the BBB.
I fount some instruction but all seem to be obsolete for latest Qt and Debian version. It seems SGX driver are not compatible anymore with newer systems.Did someone manage to build Qt with opengl support recently? What instructions did you follow?
Thanks a lot.
Luca
-
I found something working using Qt 5.12.5 while not working using Qt 5.15.x .
I configured a BeagleBone as explained here:
https://elinux.org/BeagleBoneBlack/SGX_%2B_Qt_EGLFS_%2B_Weston#Manual_installationAfter that I mounted configured SD card on my linux pc in /mnt/bbbhf and configured Qt with this command:
./configure -opensource -confirm-license -no-pch -release -device linux-beagleboard-g++ -make libs -skip qtwebengine -nomake tests -nomake examples -device-option CROSS_COMPILE=/opt/arm-toolchain/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /mnt/bbbhf -prefix /opt/qt5156-bbbhf_gl -extprefix /mnt/bbbhf/opt/qt5156-bbbhf_gl -hostprefix /opt/qt5156-bbbhf_gl -v -qt-zlib -opengl es2 -no-dbus
It fails for OPENGL using Qt 5.15 source but it's OK with Qt 5.12.
Here you can find the configure error message while testing OPENGL:
Checking for OpenGL ES 2.0... Trying source 0 (type pkgConfig) of library opengl_es2 ... pkg-config use disabled globally. => source produced no result. Trying source 1 (type makeSpec) of library opengl_es2 ... header entry 'config.qtbase_gui.libraries.opengl_es2.headers.0' passed condition. header entry 'config.qtbase_gui.libraries.opengl_es2.headers.0' passed condition. + cd /mnt/temporanea/BBB/qt-everywhere-src-5.15.0/config.tests/opengl_es2 && /mnt/temporanea/BBB/qt-everywhere-src-5.15.0/qtbase/bin/qmake "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared warn_off console single_arch" "QMAKE_CFLAGS += --sysroot=/mnt/bbbhf" "QMAKE_CXXFLAGS += --sysroot=/mnt/bbbhf" "QMAKE_LFLAGS += --sysroot=/mnt/bbbhf" -early "CONFIG += cross_compile" 'QMAKE_USE += opengl_es2' 'QMAKE_LIBS_OPENGL_ES2 = -L/mnt/bbbhf/usr/lib/arm-linux-gnueabihf/ -lGLESv2 -lEGL -lIMGegl -lsrv_um' 'QMAKE_INCDIR_OPENGL_ES2 = /mnt/bbbhf/usr/include/' /mnt/temporanea/BBB/qt-everywhere-src-5.15.0/config.tests/opengl_es2 + cd /mnt/temporanea/BBB/qt-everywhere-src-5.15.0/config.tests/opengl_es2 && MAKEFLAGS= /usr/bin/make > /opt/arm-toolchain/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -c -pipe -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mthumb -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mthumb -mfloat-abi=hard --sysroot=/mnt/bbbhf --sysroot=/mnt/bbbhf -O2 -O3 -w -fPIC -I. -isystem /opt/arm-toolchain/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/include/c++/6.3.1 -isystem /mnt/bbbhf/usr/include -I/mnt/temporanea/BBB/qt-everywhere-src-5.15.0/qtbase/mkspecs/devices/linux-beagleboard-g++ -o main.o main.cpp > /opt/arm-toolchain/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -mfloat-abi=hard --sysroot=/mnt/bbbhf --sysroot=/mnt/bbbhf -Wl,-O1 -o opengl_es2 main.o -L/mnt/bbbhf/usr/lib/arm-linux-gnueabihf/ -lGLESv2 -lEGL -lIMGegl -lsrv_um -lrt -lpthread -ldl -ldrm > /opt/arm-toolchain/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: warning: libudev.so.1, needed by /mnt/bbbhf/usr/lib/libGLESv2.so, not found (try using -rpath or -rpath-link) > /opt/arm-toolchain/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: warning: libwayland-server.so.0, needed by /mnt/bbbhf/usr/lib/libGLESv2.so, not found (try using -rpath or -rpath-link) > /opt/arm-toolchain/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: warning: libdrm_omap.so.1, needed by /mnt/bbbhf/usr/lib/libGLESv2.so, not found (try using -rpath or -rpath-link) > /opt/arm-toolchain/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: warning: libffi.so.6, needed by /mnt/bbbhf/usr/lib/libGLESv2.so, not found (try using -rpath or -rpath-link) > /mnt/bbbhf/usr/lib/libIMGegl.so: undefined reference to `wl_resource_post_no_memory' > /mnt/bbbhf/usr/lib/libIMGegl.so: undefined reference to `wl_buffer_interface' > /mnt/bbbhf/usr/local/lib/libgbm.so.2: undefined reference to `udev_unref@LIBUDEV_183' > /mnt/bbbhf/usr/lib/libIMGegl.so: undefined reference to `wl_resource_instance_of' > /mnt/bbbhf/usr/local/lib/libgbm.so.2: undefined reference to `udev_new@LIBUDEV_183' > /mnt/bbbhf/usr/local/lib/libgbm.so.2: undefined reference to `udev_device_get_devnode@LIBUDEV_183' > /mnt/bbbhf/usr/lib/libIMGegl.so: undefined reference to `wl_resource_post_error' > /mnt/bbbhf/usr/lib/libIMGegl.so: undefined reference to `wl_global_destroy' > /mnt/bbbhf/usr/lib/libIMGegl.so: undefined reference to `wl_client_post_no_memory' > /mnt/bbbhf/usr/lib/libIMGegl.so: undefined reference to `wl_resource_get_user_data' > /mnt/bbbhf/usr/lib/libIMGegl.so: undefined reference to `wl_resource_create' > /mnt/bbbhf/usr/lib/libIMGegl.so: undefined reference to `wl_resource_set_implementation' > /mnt/bbbhf/usr/lib/libIMGegl.so: undefined reference to `wl_resource_post_event' > /mnt/bbbhf/usr/local/lib/libgbm.so.2: undefined reference to `udev_device_unref@LIBUDEV_183' > /mnt/bbbhf/usr/lib/libIMGegl.so: undefined reference to `wl_resource_destroy' > /mnt/bbbhf/usr/lib/libIMGegl.so: undefined reference to `wl_global_create' > /mnt/bbbhf/usr/local/lib/libgbm.so.2: undefined reference to `udev_device_new_from_devnum@LIBUDEV_183'
While here the checking message on Qt 5.12 that PASS:
Trying source 0 (type pkgConfig) of library opengl_es2 ... pkg-config use disabled globally. => source produced no result. Trying source 1 (type makeSpec) of library opengl_es2 ... header entry 'config.qtbase_gui.libraries.opengl_es2.headers.0' passed condition. header entry 'config.qtbase_gui.libraries.opengl_es2.headers.0' passed condition. + cd /mnt/temporanea/BBB/qt-everywhere-src-5.12.5/config.tests/opengl_es2 && /mnt/temporanea/BBB/qt-everywhere-src-5.12.5/qtbase/bin/qmake "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared use_gold_linker warn_off console single_arch" "QMAKE_CFLAGS += --sysroot=/mnt/bbbhf" "QMAKE_CXXFLAGS += --sysroot=/mnt/bbbhf" "QMAKE_LFLAGS += --sysroot=/mnt/bbbhf" -early "CONFIG += cross_compile" 'QMAKE_USE += opengl_es2' 'QMAKE_LIBS_OPENGL_ES2 = /mnt/bbbhf/usr/lib/libGLESv2.so /mnt/bbbhf/usr/lib/libEGL.so /mnt/bbbhf/usr/lib/libIMGegl.so /mnt/bbbhf/usr/lib/libsrv_um.so' 'QMAKE_INCDIR_OPENGL_ES2 = /mnt/bbbhf/usr/include/' /mnt/temporanea/BBB/qt-everywhere-src-5.12.5/config.tests/opengl_es2 + cd /mnt/temporanea/BBB/qt-everywhere-src-5.12.5/config.tests/opengl_es2 && MAKEFLAGS= /usr/bin/make > /opt/arm-toolchain/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -c -pipe -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mthumb -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mthumb -mfloat-abi=hard --sysroot=/mnt/bbbhf --sysroot=/mnt/bbbhf -O2 -O3 -w -fPIC -I. -isystem /opt/arm-toolchain/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/include/c++/6.3.1 -isystem /mnt/bbbhf/usr/include -I/mnt/temporanea/BBB/qt-everywhere-src-5.12.5/qtbase/mkspecs/devices/linux-beagleboard-g++ -o main.o main.cpp > /opt/arm-toolchain/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -mfloat-abi=hard --sysroot=/mnt/bbbhf --sysroot=/mnt/bbbhf -Wl,-O1 -fuse-ld=gold -o opengl_es2 main.o /mnt/bbbhf/usr/lib/libGLESv2.so /mnt/bbbhf/usr/lib/libEGL.so /mnt/bbbhf/usr/lib/libIMGegl.so /mnt/bbbhf/usr/lib/libsrv_um.so -lrt -lpthread -ldl -ldrm => source accepted.
As you can see it checks for OPENGL in a different way with different parameters.
Is it a bug or an incompatibility between BeagleBone and Qt 5.15 opengl support?