首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用OpenGL ES 2.0支持为arm编译QT5.3提供“找不到-lGLESv2”

用OpenGL ES 2.0支持为arm编译QT5.3提供“找不到-lGLESv2”
EN

Stack Overflow用户
提问于 2014-06-22 20:31:06
回答 1查看 6.6K关注 0票数 1

我正在用以下qmake.conf为ARM编译QT5.3:

代码语言:javascript
运行
复制
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)

我已经安装了OpenGL ES包

代码语言:javascript
运行
复制
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

在运行我的配置之后:

代码语言:javascript
运行
复制
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

最后,我得到了以下几点:

代码语言:javascript
运行
复制
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++.

我的笔友就在这里(我想这就是它要找的):

代码语言:javascript
运行
复制
$ 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-23 00:16:46

我试图将x86库链接到我的ARM构建中,而出于我自己的无知,我不知道OpenGL只是一个标准,因此只有可用的头。

因此,我的问题的解决方案是编译一些OpenGL ES实现,例如用于ARM的mesa3d,然后将这些二进制文件链接到Qt。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24355468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档