交叉编译Mesa,X11lib,Qt opengl
记录Mesa配置文件如下:
Mesa版本:Mesa-10.2.3
- CC=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-gcc CXX=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ ./configure --prefix=/home/work/DownLoad/Mesa --target=arm-linux --host=arm-linux --enable-gles2 --enable-gles1 --disable-glx --enable-egl --disable-dri --enable-shared-glapi --with-egl-platforms=fbdev --with-dri-drivers=swrast
- 或者
- unset PKG_CONFIG_PATH
- export PKG_CONFIG_PATH=/home/work/DownLoad/presen/lib/pkgconfig:/home/work/DownLoad/libdrm/lib/pkgconfig
- CC=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-gcc CXX=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ ./configure --target=arm-linux --host=arm-linux --prefix=/home/work/DownLoad/Mesa-10.0 --enable-gl --enable-gles2 --enable-gles1 --enable-opengl --enable-shared-glapi --disable-dri --enable-shared-dricore --enable-gles1 --enable-opengl --enable-gallium-egl --with-egl-platforms=fbdev --with-gallium-drivers=swrast --with-dri-drivers=swrast CFLAGS="-I/home/work/DownLoad/libudev/include -L/home/work/DownLoad/libudev/lib/arm-linux-gnueabi"
- make &&make install
1 Mesa-10.3.5
#arm-linux
CC=/opt/arm-4.8.1/bin/arm-none-linux-gnueabi-gcc
CXX=/opt/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ ./configure
--prefix=/Mesa --target=arm-linux --host=arm-linux --enable-gles2
--enable-gles1 --disable-glx --enable-egl --disable-dri
--enable-shared-glapi --with-egl-platforms=fbdev
--with-dri-drivers=swrast
---- configure: error: Package requirements (libdrm_radeon >= 2.4.56) were not met:
Requested 'libdrm_radeon >= 2.4.56' but version of libdrm_radeon is 2.4.52
安装libdrm-2.4.58
CC=/opt/Sourcery_G++_Lite4.5.1/bin/arm-none-linux-gnueabi-gcc ./configure --host=arm-linux
-----configure: error: Package requirements (pciaccess >= 0.10) were not met:
No package 'pciaccess' found
安装 sudo apt-get install libpciaccess-dev
------CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/bash /root/桌面/Mesa-10.3.5/bin/missing aclocal-1.14 -I m4
/root/桌面/Mesa-10.3.5/bin/missing: 行 81: aclocal-1.14: 未找到命令
WARNING: 'aclocal-1.14' is missing on your system.
You should only need it if you modified 'acinclude.m4' or
'configure.ac' or m4 files included by 'configure.ac'.
The 'aclocal' program is part of the GNU Automake package:
<http://www.gnu.org/software/automake>
It also requires GNU Autoconf, GNU m4 and Perl in order to run:
<http://www.gnu.org/software/autoconf>
<http://www.gnu.org/software/m4/>
<http://www.perl.org/>
make: *** [aclocal.m4] 错误 127
解决方法 sudo autoreconf -ivf
--------./configure: line 6427: syntax error near unexpected token `2.2'
./configure: line 6427: `LT_PREREQ(2.2)'
解决方法:1 apt-get libtool 2 把源文件目录清空,build目录也清空,重新解压,重新配置编译就行。
/*
automake >= 1.11.1 (AM_INIT_AUTOMAKE([1.11.1])) (or 1.10.3, Automake < 1.10.3 and 1.11 are known to be suffering from
critical security issues)
autoconf >= 2.64 (AC_PREREQ(2.64))
libtool >= 2.2.6 (LT_PREREQ([2.2.6]))
intltool >= 0.40.0 (IT_PROG_INTLTOOL([0.40.0]))
*/
---------/bin/bash: yacc: 未找到命令
make[2]: *** [../../src/mesa/program/program_parse.tab.c] 错误 127
make[2]:正在离开目录 `/root/桌面/Mesa-10.3.5/src/mesa'
make[1]: *** [all-recursive] 错误 1
make[1]:正在离开目录 `/root/桌面/Mesa-10.3.5/src'
make: *** [all-recursive] 错误 1
解决方法yacc和lex在ubuntu使用flex和bison代替,此处安装bison就是安装yacc 执行命令 : $sudo apt-get install bison $sudo apt-get
install flex
------CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/bash /root/桌面/Mesa-10.3.5/bin/missing aclocal-1.14 -I m4
/root/桌面/Mesa-10.3.5/bin/missing: 行 81: aclocal-1.14: 未找到命令
WARNING: 'aclocal-1.14' is missing on your system.
You should only need it if you modified 'acinclude.m4' or
'configure.ac' or m4 files included by 'configure.ac'.
The 'aclocal' program is part of the GNU Automake package:
<http://www.gnu.org/software/automake>
It also requires GNU Autoconf, GNU m4 and Perl in order to run:
<http://www.gnu.org/software/autoconf>
<http://www.gnu.org/software/m4/>
<http://www.perl.org/>
make: *** [aclocal.m4] 错误 127
解决方法 sudo autoreconf -ivf
--------./configure: line 6427: syntax error near unexpected token `2.2'
./configure: line 6427: `LT_PREREQ(2.2)'
解决方法:1 apt-get libtool 2 把源文件目录清空,build目录也清空,重新解压,重新配置编译就行。
/*
automake >= 1.11.1 (AM_INIT_AUTOMAKE([1.11.1])) (or 1.10.3, Automake < 1.10.3 and 1.11 are known to be suffering from
critical security issues)
autoconf >= 2.64 (AC_PREREQ(2.64))
libtool >= 2.2.6 (LT_PREREQ([2.2.6]))
intltool >= 0.40.0 (IT_PROG_INTLTOOL([0.40.0]))
*/
---------/bin/bash: yacc: 未找到命令
make[2]: *** [../../src/mesa/program/program_parse.tab.c] 错误 127
make[2]:正在离开目录 `/root/桌面/Mesa-10.3.5/src/mesa'
make[1]: *** [all-recursive] 错误 1
make[1]:正在离开目录 `/root/桌面/Mesa-10.3.5/src'
make: *** [all-recursive] 错误 1
解决方法yacc和lex在ubuntu使用flex和bison代替,此处安装bison就是安装yacc 执行命令 : $sudo apt-get install bison $sudo apt-get
install flex
Qt配置:
- ./configure -prefix /usr/local/qt-5.2.1-embedded-arm-quick -release -opensource -qt-libpng -qt-libjpeg -plugin-sql-sqlite -widgets -qt-sql-sqlite -make libs -no-cups -no-nis -no-iconv -no-dbus -no-openssl -no-iconv -no-accessibility -no-javascript-jit -no-sse2 -silent -xplatform linux-arm-gnueabi-g++ -nomake tools -nomake examples -nomake tests -qt-freetype -opengl es2 -qreal float -no-glib -strip -xinput2 -linuxfb -plugindir /usr/local/qt-5.2.1-embedded-arm-quick/plugin -qmldir /usr/local/qt-5.2.1-embedded-arm-quick/qml -importdir /usr/local/qt-5.2.1-embedded-arm-quick/imports -L/home/work/DownLoad/Mesa/lib -I/home/work/DownLoad/Mesa/include -confirm-license "$@" -verbose
- make && make install
- qmake.conf中需要加入:QMAKE_LIBS_OPENGL_ES2 = -lglapi -lGLESv2 -lEGL
- 这是由于libGLESv2.so依赖于libglapi.so,可以用arm-none-linux-gnueabi-ld查看关系库的依赖关系。Mesa交叉编译的时候如果没有 --enable-shared-glapi,则会报如下错误:
- libGLESv2.so: undefined reference to '_glapi_get_dispatch'
- libGLESv2.so: undefined reference to'_glapi_Dispatch'
XLib所有源码下载地址:
- http://cgit.freedesktop.org/xorg/
http://cgit.freedesktop.org/xorg/
ubuntu 命令行批量下载: wget -r -np -nd ftp://mirrors.go-part.com/xorg/X11R7.7/
记录LibX11-1.3.2的配置如下:
- echo enable_malloc0returnsnull=yes>arm-linux.cache
这一句是为了保证可以交叉编译,不然交叉编译的时候test是不会过的,会报如下错误:
checking whether malloc(0) returns NULL... configure: error: in `/home/work/DownLoad/libX11-1.3.2':
configure: error: cannot run test program while cross compiling
这是由于xlib在使用--host=arm-linux的时候禁止交叉编译。解决方法为从congfirue中找到报错的那一句,查看具有+set的那一句脚本,例如本例中为:
- vim configure
- 查找checking whether malloc(0) returns Null...这一句,得到以下信息
- # Check whether --enable-malloc0returnsnull was given.
- if test "${enable_malloc0returnsnull+set}" = set; then
- enableval=$enable_malloc0returnsnull; MALLOC_ZERO_RETURNS_NULL=$enableval
- else
- MALLOC_ZERO_RETURNS_NULL=auto
- fi
- { $as_echo "$as_me:$LINENO: checking whether malloc(0) returns NULL" >&5
- $as_echo_n "<span style="color:#FF0000;">checking whether malloc(0) returns NULL... " >&6; }
- if test "x$MALLOC_ZERO_RETURNS_NULL" = xauto; then
- if test "$cross_compiling" = yes; then
- { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
- $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- { { $as_echo "$as_me:$LINENO: error: cannot run test program while cross compiling
- See \`config.log' for more details." >&5
- $as_echo "$as_me: error: cannot run test program while cross compiling
- See \`config.log' for more details." >&2;}
由于他是在if test "${enable_malloc0returnsnull+set}" = set;

- make clean && make distclean
- rm -rf arm-linux.cache
- echo enable_malloc0returnsnull=yes>arm-linux.cache
- CC=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-gcc CXX=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ ./configure --prefix=/home/work/DownLoad/libX11/ --disable-xf86bigfont --host=arm-linux --target=arm-linux CFLAGS="-I/home/work/DownLoad/libX11/include -I/home/work/DownLoad/libX11/libxcb/include -L/home/work/DownLoad/libX11/lib -L/home/work/DownLoad/libX11/libxcb/lib" --includedir=/home/work/DownLoad/libX11/include XPROTO_LIBS=/home/work/DownLoad/libX11/lib --cache-file=arm-linux.cache
- make && make install
- CFLAGS="-I/home/work/DownLoad/libX11/include -L/home/work/DownLoad/libX11/lib",这句制定xPorto的路径,因为需要用到xProto中的x.h
交叉编译X11需要交叉编译Xproto(版本xproto-7.0.17):
Xporto下载地址:
- http://cgit.freedesktop.org/xorg/proto/xproto/
- configXproto.sh如下:
- CC=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-gcc CXX=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ ./configure --prefix=/home/work/DownLoad/libX11/ --host=arm-linux --target=arm-linux
- make && make install
由于需要用到Xtrans.h,故而需要下载xtrans,下载地址为:
- http://www.x.org/releases/X11R7.5/src/lib/
我所选的版本为:xtrans-1.2.5
交叉编译和上面的类似
- CC=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-gcc CXX=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ ./configure --prefix=/home/work/DownLoad/libX11/ --host=arm-linux --target=arm-linux --cache-file=arm-linux.cache
- make && make install
由于报错XKB.c:36:37: fatal error: X11/extensions/XKBproto.h: No such file or directory,故而还需要用到kbproto-1.0.6
kbproto-1.0.6下载地址:
- http://cgit.freedesktop.org/xorg/proto/kbproto/
kbproto-1.0.6交叉编译和上面的类似:
- make clean && make distclean
- rm -rf configure
- ./autogen.sh
- CC=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-gcc CXX=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ ./configure --prefix=/home/work/DownLoad/libX11/kbproto --host=arm-linux --target=arm-linux
- make && make install
需要XI.h,需要下载inputproto-2.1.99.6,下载地址为:
- http://cgit.freedesktop.org/xorg/proto/inputproto/
iputProto-2.1.99.6交叉编译和上面类似
- make clean && make distclean
- rm -rf configure
- ./autogen.sh
- CC=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-gcc CXX=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ ./configure --prefix=/home/work/DownLoad/libX11/inputporto/ --host=arm-linux --target=arm-linux
错误:../include/X11/Xlib-xcb.h:7:21: fatal error: xcb/xcb.h: No such file or directory
需要下载libXcb,下载地址
- http://xcb.freedesktop.org/dist/
libxcb-1.8.1交叉编译如下:
- export PKG_CONFIG_PATH=/home/work/DownLoad/libX11/xcbproto/lib/pkgconfig
- make clean && make distclean
- rm -rf arm-linux.cache
- echo ac_cv_path_XSLTPROC=/home/work/DownLoad/libX11/libxslt/bin > arm-linux.cache
- CC=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-gcc CXX=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ ./configure --prefix=/home/work/DownLoad/libX11/libxcb/ CFLAGS="-I/home/work/DownLoad/libX11/libxslt/include -I/home/work/DownLoad/libX11/LibXau/include -I/home/work/DownLoad/libX11/include -L/home/work/DownLoad/libX11/libxslt/lib -L/home/work/DownLoad/libX11/LibXau/lib" --host=arm-linux --target=arm-linux --cache-file=arm-linux.cache
- 错误信息:configure: error: XCB requires xsltproc
下载xsltproc,下载地址:
- https://git.gnome.org/browse/libxslt/
- <pre name="code" class="html">CC=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-gcc CXX=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ ./configure --with-libxml-libs-prefix=/home/work/DownLoad/libX11/libxml2/lib --with-libxml-include-prefix=/home/work/DownLoad/libX11/include/libxml2/libxml/ --prefix=/home/work/DownLoad/libX11/libxslt/ --host=arm-linux --target=arm-linux
如果已经交叉编译并且已经指定libxml2的路径,然而还是找不到libxml2,可以将在congfigure中手动指出xml的路径
LIBXML_CONFIG_PREFIX="/home/work/DownLoad/libX11/libxml2"
xsltproc需要下载libxml,下载地址:
- ftp://xmlsoft.org/libxml2/
- 交叉编译和上面的类似
- xcb需要xcb-proto,下载地址:http://xcb.freedesktop.org/dist/
- xcb-proto-1.7交叉编译如下:
- CC=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-gcc CXX=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ ./configure --prefix=/home/work/DownLoad/libX11/xcbproto/ --host=arm-linux --target=arm-linux
- make && make install
- xcb需要libxau,下载地址:http://cgit.freedesktop.org/xorg/lib/libXau/
- libXau-1.0.7交叉编译:
- make clean && make distclean
- rm -rf configure
- ./autogen.sh
- CC=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-gcc CXX=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ ./configure --prefix=/home/work/DownLoad/libX11/LibXau/ --host=arm-linux --target=arm-linux CFLAGS="-I/home/work/DownLoad/libX11/include"
- make && make instal
附录一下交叉编译成功后的lib库的下载地址,用以以后下载使用:
http://download.csdn.net/detail/mkndg/7738667
交叉编译Mesa,X11lib,Qt opengl的更多相关文章
- Qt OpenGL三维绘图
简介 OpenGL是为三维绘图提供的标准应用编程接口. OpenGL处理的仅仅是三维绘图方面,而很少或是根本不提供图形用户界面编程方面的支持.OpenGL*应用程序的用户界面必须由其它工具包创建,比 ...
- QT OpenGL中文教程在QT4版本后的错误代码更改(一)
由于教程中说的已经够可以了,这里就不对代码进行分析了,有兴趣可以自己去看看.这个教程来源于原来的NeHeOpenGL中文教程 (http://www.yakergong.net/nehe/) ,但其有 ...
- ubuntu下配置qt+opengl+opencv
原地址:http://www.cnblogs.com/aleny-liu/archive/2011/12/16/aleny-Qtnote1.html http://blog.csdn.net/jdh9 ...
- 【原创】基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结(二)
承接上文http://www.cnblogs.com/bombe1013/p/3294301.html,我们接下来说说Qt的移植与安装. 很喜欢Qt这个库以及Qt creater这个IDE,其实个人觉 ...
- Qt OpenGL 鼠标拾取实现
在之前的文章中讲到了OpenGL鼠标拾取操作的例子,工作中需要在Qt中实现,下面的程序演示了QT中opengl的拾取例子. 本例子在Qt5.12和Qt Creator4.8.0上测试,使用的是QOpe ...
- QT OpenGL绘制三维图形(立方体、圆柱体、圆锥、球体、圆环等等)
本文使用QGLWidget来绘制各种三维基本图形,包括立方体.圆柱体.圆锥.球体.圆环等等,涉及包括基本绘制以及上色.纹理.旋转等操作. 使用的软件版本:QT5.12 + QT Creater4.8. ...
- 初探 Qt Opengl【2】
最近在研究QOPengl QGraphicsView QGraphicsItemQGraphicsScene不过也只是皮毛,也不是做什么技术贴,就是记录一下自己在其中遇到的问题,和自己新学到的东西. ...
- 初探Qt Opengl【1】
最近一直在学习Qt的opengl绘图,看到好多资源都是关于以前的旧版本的, 我将我这几天学的的部分关于opengl的做个总结,也希望对需要学习的人有一定的帮助 在我的学习中,我主要用到一下三个方法 # ...
- 45.Qt openGL实现三维绘图
main.cpp #include <QApplication> #include <iostream> #include "tetraheadron.h" ...
随机推荐
- ImageData
http://www.html5china.com/HTML5features/canvas/20120501_3591.html 1.上下文对象 Context 有三个方法用来创建.读取和设置 Im ...
- java开发目前技术选型
目前系统采用 1.后端 服务框架:Dubbo.zookeeper 缓存:Redis.ehcache 消息中间件:ActiveMQ,kafka 负载均衡:Nginx 分布式文件:FastDFS 数据库连 ...
- java 获取网页指定内容
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; ...
- Xcode中授权普通成员
问题: 在普通用户账户下使用系统的Xcode在编译通过时候会提示” Developer Tools Access“需控制另一进程,需要输入“Developer Tools”组用户名密码才能继续调试 解 ...
- hadoop之WordCount源代码分析
//近期在研究hadoop.第一个想要要開始研究的必然是wordcount程序了.看了<hadoop应用开发实战解说>结合自己的理解,对wordcount的源代码进行分析. <pre ...
- hdu 5374 Tetris(模拟)
pid=5374">题目链接:hdu 5374 Tetris 模拟.每次进行操作时推断操作是否合法,合法才运行,否则跳过.每次一个token落地,推断一下是否有消除整行. #inclu ...
- eclipse 查看源代码
文地址:http://blog.csdn.net/sushengmiyan/article/details/18798473 本文作者:sushengmiyan 我们在使用Eclipse的时候,经常是 ...
- 解决ionic 2载入速度慢的问题
1.ionic build android --prod 使用生产环境的服务器 (最关键部分) [--production-mode=y,n] ................. Tell Io ...
- 第9章 Docker Swarm 相关问题
9.1 我的 Docker 版本是 1.12,请问我跑的是一代 Swarm 还是二代 Swarm 啊? ……自己运行的 Swarm 怎么会连自己都不知道跑的是啥?
- Android自定义Button字体颜色和背景颜色
http://blog.csdn.net/breeze666/article/details/7747649