I have been trying to cross compile Qt 5.3.2 following this tutorial [ics.com] and without eglfs and egl the build succeeds. But when I try to compile it with eglfs and egl I’m getting the following error:
/src/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++ -Wl,-rpath-link,/mnt/rpi-rootfs/opt/vc/lib -Wl,-rpath-link,/mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/mnt/rpi-rootfs/lib/arm-linux-gnueabihf --sysroot=/mnt/rpi-rootfs -Wl,--no-undefined -Wl,--no-undefined -Wl,-O1 -Wl,-rpath,/opt/qt5-rpi/lib -shared -o libqeglfs.so .obj/main.o .obj/qeglfsintegration.o .obj/qeglfswindow.o .obj/qeglfsscreen.o .obj/qeglfshooks_stub.o .obj/qeglfscontext.o .obj/qeglfshooks_pi.o .obj/qrc_cursor.o -L/mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf -L/mnt/rpi-rootfs/opt/vc/lib -lbcm_host -L/home/mohylaf/src/rpi/qt5_2/qtbase/lib -lQt5PlatformSupport -L/mnt/rpi-rootfs/usr/lib/vc -lz -ludev -lmtdev -lQt5Gui -lQt5Core -lGLESv2 -lpthread -lEGL -L/mnt/rpi-rootfs/usr/lib
.obj/qeglfsintegration.o: In function `QEglFSIntegration::~QEglFSIntegration()':
qeglfsintegration.cpp:(.text+0x68): undefined reference to `QEGLPlatformIntegration::~QEGLPlatformIntegration()'
and other errors related to the missing methods from QEGLPlatformIntegration class.
More detailed info:
I’m using the Raspbian ‘wheezy’ distro version from December 2014. In addition to the above mentioned tutorial, I had to install the following packages on Raspbian
libgegl-dev
libgbm-dev
libehl1-mesa-dev
libgles2-mesa-dev
libraspberrypi-dev
and I edited the QMAKE_LIBDIR_OPENGL_ES2 and QMAKE_INCDIR_EGL paths in /src/rpi/qt5/qtbase/mkspecs/devices/linux-rasp-pi-g++/qmake.conf
the configuration then looks like this (showing only the relevant part … at least I hope)
qmake vars .......... styles += mac fusion windows QMAKE_INCDIR_OPENGL_ES2 = QMAKE_LIBDIR_OPENGL_ES2 = "/mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf" QMAKE_LIBS_OPENGL_ES2 = "-L/mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf" "-lGLESv2" QMAKE_INCDIR_LIBUDEV = QMAKE_LIBS_LIBUDEV = -ludev DEFINES += QT_NO_LIBUDEV QMAKE_X11_PREFIX = /usr DEFINES += QT_NO_XKB QMAKE_XKB_CONFIG_ROOT = /usr/share/X11/xkb QMAKE_INCDIR_EGL = /mnt/rpi-rootfs/usr/include/libdrm QMAKE_LIBS_EGL = -L/mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf -lEGL QMAKE_CFLAGS_EGL = QMAKE_CFLAGS_XCB = QMAKE_LIBS_XCB = -L/mnt/rpi-rootfs/usr/lib/arm-linux-gnueabihf -lxcb-sync -lxcb-xfixes -lxcb-render -lxcb-randr -lxcb-image -lxcb-shm -lxcb-keysyms -lxcb-icccm -lxcb-shape -lxcb sql-drivers = sql-plugins = sqlite qmake switches
Build options:
Configuration .......... accessibility alsa audio-backend c++11 clock-gettime clock-monotonic compile_examples concurrent cross_compile egl eglfs evdev eventfd freetype full-config getaddrinfo getifaddrs iconv inotify ipv6ifname large-config largefile linuxfb medium-config minimal-config mremap mtdev nis no-harfbuzz opengl opengles2 pcre png posix_fallocate qpa qpa reduce_exports release rpath shared small-config system-jpeg system-zlib xcb xcb-glx xcb-plugin xcb-render xcb-sm xcb-xlib xkbcommon-qt xlib xrender
Build parts ............ libs examples
Mode ................... release
Using C++11 ............ yes
Using PCH .............. no
Target compiler supports:
iWMMXt/Neon .......... no/auto
Qt modules and options:
Qt D-Bus ............... no
Qt Concurrent .......... yes
Qt GUI ................. yes
Qt Widgets ............. yes
Large File ............. yes
QML debugging .......... yes
Use system proxies ..... no
Support enabled for:
Accessibility .......... yes
ALSA ................... yes
CUPS ................... no
Evdev .................. yes
FontConfig ............. no
FreeType ............... yes (bundled copy)
Glib ................... no
GTK theme .............. no
HarfBuzz ............... no
Iconv .................. yes
ICU .................... no
Image formats:
GIF .................. yes (plugin, using bundled copy)
JPEG ................. yes (plugin, using system library)
PNG .................. yes (in QtGui, using bundled copy)
journald ............... no
mtdev .................. yes (system library)
Networking:
getaddrinfo .......... yes
getifaddrs ........... yes
IPv6 ifname .......... yes
OpenSSL .............. no
NIS .................... yes
OpenGL / OpenVG:
EGL .................. yes
OpenGL ............... yes (OpenGL ES 2.x)
OpenVG ............... no
PCRE ................... yes (bundled copy)
pkg-config ............. yes
PulseAudio ............. no
QPA backends:
DirectFB ............. no
EGLFS ................ yes
KMS .................. no
LinuxFB .............. yes
XCB .................. yes (system library)
EGL on X ........... no
GLX ................ yes
MIT-SHM ............ yes
Xcb-Xlib ........... yes
Xcursor ............ yes (loaded at runtime)
Xfixes ............. yes (loaded at runtime)
Xi ................. yes (loaded at runtime)
Xi2 ................ no
Xinerama ........... yes (loaded at runtime)
Xrandr ............. yes (loaded at runtime)
Xrender ............ yes
XKB ................ no
XShape ............. yes
XSync .............. yes
XVideo ............. yes
Session management ..... yes
after the compilation error I checked the symbols included in /src/rpi/qt5_2/qtbase/lib/libQt5PlatformSupport.a library (that is where I assume that the QEGLPlatformIntegration class methods definitions will be) and there is no qeglconvenience.o object and therefore no QEGLPlatformIntegration class methods …
I also checked the /src/rpi/qt5_2/qtbase/src/platformsupport/Makefile which was generated and there is no prescription to make the qeglconvenience.o object … but I don’t know why.
Thanks for help.
↧