码迷,mamicode.com
首页 > 其他好文 > 详细

交叉编译Mesa,X11lib,Qt opengl

时间:2015-07-30 11:04:17      阅读:292      评论:0      收藏:0      [点我收藏+]

标签:

记录Mesa配置文件如下:

Mesa版本:Mesa-10.2.3

  1. 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  
  2. 或者  
  3. unset PKG_CONFIG_PATH  
  4. export PKG_CONFIG_PATH=/home/work/DownLoad/presen/lib/pkgconfig:/home/work/DownLoad/libdrm/lib/pkgconfig  
  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 --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"  
  6. make &&make install  

Qt配置:

  1. ./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  
  2. make && make install  
  3. qmake.conf中需要加入:QMAKE_LIBS_OPENGL_ES2 = -lglapi -lGLESv2 -lEGL  
  4. 这是由于libGLESv2.so依赖于libglapi.so,可以用arm-none-linux-gnueabi-ld查看关系库的依赖关系。Mesa交叉编译的时候如果没有 --enable-shared-glapi,则会报如下错误:  
  5. libGLESv2.so: undefined reference to ‘_glapi_get_dispatch‘  
  6. libGLESv2.so: undefined reference to‘_glapi_Dispatch‘   


XLib所有源码下载地址:

  1. 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的配置如下:

  1. 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的那一句脚本,例如本例中为:

  1. vim configure  
  2. 查找checking whether malloc(0) returns Null...这一句,得到以下信息  
  3. # Check whether --enable-malloc0returnsnull was given.  
  4. if test "${enable_malloc0returnsnull+set}" = set; then  
  5.   enableval=$enable_malloc0returnsnull; MALLOC_ZERO_RETURNS_NULL=$enableval  
  6. else  
  7.   MALLOC_ZERO_RETURNS_NULL=auto  
  8. fi  
  9.   
  10.   
  11. { $as_echo "$as_me:$LINENO: checking whether malloc(0) returns NULL" >&5  
  12. $as_echo_n "<span style="color:#FF0000;">checking whether malloc(0) returns NULL... " >&6; }  
  13. if test "x$MALLOC_ZERO_RETURNS_NULL" = xauto; then  
  14.         if test "$cross_compiling" = yes; then  
  15.   { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd‘:" >&5  
  16. $as_echo "$as_me: error: in \`$ac_pwd‘:" >&2;}  
  17. { { $as_echo "$as_me:$LINENO: error: cannot run test program while cross compiling  
  18. See \`config.log‘ for more details." >&5  
  19. $as_echo "$as_me: error: cannot run test program while cross compiling  
  20. See \`config.log‘ for more details." >&2;}  


由于他是在if test "${enable_malloc0returnsnull+set}" = set;

技术分享技术分享

  1. make clean && make distclean  
  2. rm -rf arm-linux.cache  
  3. echo enable_malloc0returnsnull=yes>arm-linux.cache  
  4. 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  
  5. make && make install  
  1. CFLAGS="-I/home/work/DownLoad/libX11/include -L/home/work/DownLoad/libX11/lib",这句制定xPorto的路径,因为需要用到xProto中的x.h  

交叉编译X11需要交叉编译Xproto(版本xproto-7.0.17):

Xporto下载地址:

  1. http://cgit.freedesktop.org/xorg/proto/xproto/  
  2. configXproto.sh如下:  
  1. 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  
  2. make && make install  

由于需要用到Xtrans.h,故而需要下载xtrans,下载地址为:

  1. http://www.x.org/releases/X11R7.5/src/lib/  

我所选的版本为:xtrans-1.2.5

交叉编译和上面的类似

  1. 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  
  2. 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下载地址:

  1. http://cgit.freedesktop.org/xorg/proto/kbproto/  

kbproto-1.0.6交叉编译和上面的类似:

  1. make clean && make distclean  
  2. rm -rf configure  
  3. ./autogen.sh  
  4. 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   
  5. make && make install  


需要XI.h,需要下载inputproto-2.1.99.6,下载地址为:

  1. http://cgit.freedesktop.org/xorg/proto/inputproto/  

iputProto-2.1.99.6交叉编译和上面类似

  1. make clean && make distclean  
  2. rm -rf configure  
  3. ./autogen.sh  
  4. 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,下载地址

  1. http://xcb.freedesktop.org/dist/  

libxcb-1.8.1交叉编译如下:

  1. export PKG_CONFIG_PATH=/home/work/DownLoad/libX11/xcbproto/lib/pkgconfig  
  2. make clean && make distclean  
  3. rm -rf arm-linux.cache  
  4. echo ac_cv_path_XSLTPROC=/home/work/DownLoad/libX11/libxslt/bin > arm-linux.cache  
  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/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  
  6. 错误信息:configure: error: XCB requires xsltproc  

下载xsltproc,下载地址:

  1. https://git.gnome.org/browse/libxslt/  
  2. <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,下载地址:

  1. ftp://xmlsoft.org/libxml2/  
  2. 交叉编译和上面的类似  
  3.   
  4. xcb需要xcb-proto,下载地址:http://xcb.freedesktop.org/dist/  
  5. xcb-proto-1.7交叉编译如下:  
  6. 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  
  7. make && make install  
  8. xcb需要libxau,下载地址:http://cgit.freedesktop.org/xorg/lib/libXau/  
  9. libXau-1.0.7交叉编译:  
  10. make clean && make distclean  
  11. rm -rf configure  
  12. ./autogen.sh  
  13. 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"  
  14. make && make instal  


附录一下交叉编译成功后的lib库的下载地址,用以以后下载使用:

http://download.csdn.net/detail/mkndg/7738667

交叉编译Mesa,X11lib,Qt opengl

标签:

原文地址:http://www.cnblogs.com/subo_peng/p/4688259.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!