Kompilieren von Qt 5.3 für arm mit OpenGL ES 2.0 Unterstützung gibt "nicht finden können -lGLESv2"
Ich bin kompilieren von Qt 5.3 für ARM mit folgenden qmake.conf
:
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
load(device_config)
QT_QPA_DEFAULT_PLATFORM = eglfs
# modifications to g++.conf
QMAKE_CC = $${CROSS_COMPILE}gcc
QMAKE_CXX = $${CROSS_COMPILE}g++
QMAKE_LINK = $${QMAKE_CXX}
QMAKE_LINK_SHLIB = $${QMAKE_CXX}
# modifications to linux.conf
QMAKE_AR = $${CROSS_COMPILE}ar cqs
QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy
QMAKE_NM = $${CROSS_COMPILE}nm -P
QMAKE_STRIP = $${CROSS_COMPILE}strip
COMPILER_FLAGS = -march=armv7-a -mtune=cortex-a9 -mfloat-abi=softfp
#modifications to gcc-base.conf
QMAKE_CFLAGS += $${COMPILER_FLAGS}
QMAKE_CXXFLAGS += $${COMPILER_FLAGS}
QMAKE_CXXFLAGS_RELEASE += -O3
QMAKE_LIBS += -lrt -lpthread -ldl
# Extra stuff (OpenGL, DirectFB, ...)
QMAKE_INCDIR_EGL = $$[QT_SYSROOT]/usr/include:/usr/arm-linux-gnueabi/include/
QMAKE_LIBDIR_EGL = $$[QT_SYSROOT]/usr/lib:/usr/arm-linux-gnueabi/lib/:/usr/lib/x86_64-linux-gnu/
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}
# Sanity check
deviceSanityCheckCompiler()
load(qt_config)
Ich habe die OpenGL-ES-dev-Pakete installiert
ii libgles2-mesa:amd64 10.3.0~git20140618.88b887fa-0ubuntu0ricotz~trusty amd64 free implementation of the OpenGL|ES 2.x API -- runtime
ii libgles2-mesa-dbg:amd64 10.3.0~git20140618.88b887fa-0ubuntu0ricotz~trusty amd64 free implementation of the OpenGL|ES 2.x API -- debugging symbols
ii libgles2-mesa-dev 10.3.0~git20140618.88b887fa-0ubuntu0ricotz~trusty amd64 free implementation of the OpenGL|ES 2.x API -- development files
Nach läuft meine Konfiguration :
configure -opengl es2 -skip qtwebkit -skip qtdeclarative -no-sse4.2 -no-sse4.1 -no-sse3 -no-sse2 -no-cups -no-openssl -no-kms -no-nis -no-pch -no-mips_dspr2 -no-mips_dsp -no-accessibility -opensource -confirm-license -device-option CROSS_COMPILE=arm-linux-gnueabi- -no-xcb -qt-zlib -qt-libjpeg -qt-libpng -prefix ~/programming/tools/qt/qt-arm-5.3 -platform linux-g++ -xplatform linux-arm-gnueabi-g++ -device linux-arm-cortex9-mine-g++ -v
Bekomme ich die folgende am Ende :
OpenGL ES 2.x auto-detection... ()
arm-linux-gnueabi-g++ -c -pipe -march=armv7-a -mtune=cortex-a9 -mfloat-abi=softfp -O2 -O3 -Wall -W -fPIE -I/home/USER/programming/tools/qt/qt-everywhere-opensource-src-5.3.0/qtbase/mkspecs/devices/linux-arm-cortex9-mine-g++ -I/home/USER/programming/tools/qt/qt-everywhere-opensource-src-5.3.0/qtbase/config.tests/unix/opengles2 -I/usr/include:/usr/arm-linux-gnueabi/include/ -I. -o opengles2.o /home/USER/programming/tools/qt/qt-everywhere-opensource-src-5.3.0/qtbase/config.tests/unix/opengles2/opengles2.cpp
arm-linux-gnueabi-g++ -Wl,-O1 -o opengles2 opengles2.o -lrt -lpthread -ldl -lGLESv2 -lEGL -lIMGegl -lsrv_um
/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/bin/ld: cannot find -lGLESv2
/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/bin/ld: cannot find -lEGL
/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/bin/ld: cannot find -lIMGegl
/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/bin/ld: cannot find -lsrv_um
collect2: error: ld returned 1 exit status
make: *** [opengles2] 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
QMAKE_INCDIR_OPENGL_ES2, QMAKE_LIBDIR_OPENGL_ES2 and QMAKE_LIBS_OPENGL_ES2 in
/home/USER/programming/tools/qt/qt-everywhere-opensource-src-5.3.0/qtbase/mkspecs/devices/linux-arm-cortex9-mine-g++.
Meine libs befinden sich hier (ich denke, das ist es, was er sucht) :
$ ll /usr/lib/x86_64-linux-gnu/libGLESv2.so
lrwxrwxrwx 1 root root 21 cze 18 08:38 /usr/lib/x86_64-linux-gnu/libGLESv2.so -> mesa-egl/libGLESv2.so
Das ist Ihr host
Ich hab genau die gleiche Schlussfolgerung, aber das problem ist: ich wollte nur, um es zu kompilieren um zu testen, ob ich es tun kann, wenn ich meinen ARM cortex-a9-board. Wo bekomme ich die ARM-binaries für OpenGL ES 2.0 oder wie kann ich bauen? Das einzige, was ich finden konnte waren OpenGL-ES-Header.
libGLESv2
. Benötigen Sie ein cross-kompiliert in Ihrem sysroot. Wo ist es?Ich hab genau die gleiche Schlussfolgerung, aber das problem ist: ich wollte nur, um es zu kompilieren um zu testen, ob ich es tun kann, wenn ich meinen ARM cortex-a9-board. Wo bekomme ich die ARM-binaries für OpenGL ES 2.0 oder wie kann ich bauen? Das einzige, was ich finden konnte waren OpenGL-ES-Header.
InformationsquelleAutor Patryk | 2014-06-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe versucht, link
x86
Bibliotheken für meinen ARM zu bauen und meine eigene Unwissenheit, ich wusste nicht, dass OpenGL nur ein standard, daher gibt es nur die Kopfzeilen zur Verfügung.Also die Lösung für mein problem wäre zu kompilieren, einige OpenGL-ES-Implementierung z.B. mesa3d für ARM und dann verknüpfen Sie die Binärdateien, die auf Qt.
InformationsquelleAutor Patryk