X11 xcb 交叉编译

原文地址:http://blog.csdn.net/q1302182594/article/details/42028985

    编译环境:acer 4739Z + Win7 + WMware + ubuntu14.04

    目标环境:omapl138 + Linux

1、下载源码

    从参考资料[1]处下载相关源码(点击下面的文件名可跳到相应的下载链接):

libX11-1.5.0.tar.bz2

    在ubuntu中创建一个目录保存这些源码


    #mkdir src  

    将上述的源码都解压到src目录中。

2、配置

    创建一个用于目录作为libX11的安装位置(因为是交叉编译,所以不能使用默认的安装目录,否则会破坏ubuntu系统):

  1. $ mkdir libX11_install  

2.1 环境变量设置

    为了方便配置,可以先设置环境变量(具体值要根据你的目录名和交叉工具链名进行修改):

  1. export PREFIX=/home/liyihai/downloads/libX11_install  
  2. export HOST=arm-arago-linux-gnueabi  
    将上述内容保存为env.sh,然后执行以下命令使其生效:
  1. $ source env.sh  

2.2 configure

    进入libX11-1.5.0目录,执行下面命令进行配置

  1. $ ./configure --prefix=$PREFIX --host=$HOST  

   配置结果如下:

  1. X11 will be built with the following settings:  
  2.  Loadable i18n module support:            no  
  3.  Loadable xcursor library support:        yes  
  4.  Threading support:                       yes  
  5.  Use Threads safe API:                    yes  
  6.  Threads stubs in libX11:                 no  
  7.  XCMS:                                    yes  
  8.  Internationalization support:            yes  
  9.  XF86BigFont support:                     no  
  10.  XKB support:                             yes  
  11.  XLOCALEDIR environment variable support: yes  
  12.  Compose table cache enabled:             no  
  13.  Functional specs building enabled:       yes  

3、编译

    配置好后,就可可以执行以下命令进行编译

  1. $ make  

3.1 X11/X.h: No such file or directory

    在移植过程中,遇到各种各样的错误是难免的,关键是找到问题的所在,从而解决它。下面是进行编译时遇到的第一个错误:

  1. make[3]: Entering directory `/home/liyihai/downloads/src/libX11-1.5.0/modules/im/ximcp'  
  2.   CC     imCallbk.lo  
  3. In file included from ../../../include/X11/Xlibint.h:41:0,  
  4.                  from imCallbk.c:38:  
  5. ../../../include/X11/Xlib.h:44:19: fatal error: X11/X.h: No such file or directory  
  6. compilation terminated.  
  7. make[3]: *** [imCallbk.lo] Error 1  

    解决方法见3.2、3.3。

3.2 xproto

    下载xproto-7.0.23.tar.bz2,然后将其加压到上面创建的src目录中,进入xproto-7.0.23目录,执行以下命令来配置和安装xproto。

  1. $ ./configure --prefix=$PREFIX --host=$HOST  
  2. $ make  
  3. $ make install  

    这时,上面创建的libX11_install目录中就多了一些目录(inclue、lib、share)和其它相关文件,其中include/X11目录中就有3.1小节所缺少的X.h文件。到此,问题还没有完全解决,继续看3.3。

3.3 PKG_CONFIG_PATH 

    就算有了X.h头文件,在编译过程中编译工具也不会自动找到它。其实在进行3.2小节的操作前,使用find命令可以找到ubuntu的/usr/include/X11中是存在X.h这头文件的。现在是交叉编译,交叉编译工具不会自动的到/usr/include目录中去寻找头文件,当然也不会到libX11_install/include这个用户自己创建的目录去找,除非用户指定。

    然而,由于Makefile的内容太多,而且非常复杂,直接修改其中的includedir变量时,发现无济于事。这时,唯一的办法就是指定PKG_CONFIG_PATH环境变量(原因请看《pkg-config》)。

    将2.1中的环境变量设置脚本内容改为:

  1. export PREFIX=/home/liyihai/downloads/libX11_install  
  2. export HOST=arm-arago-linux-gnueabi  
  3. export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig  
    然后再次使用以下命令使其生效
  1. $ source env.sh  

    按照2.2小节的方法重新配置libX11,然后再次编译。这时3.1的问题已经解决。

3.4 X11/Xtrans/Xtrans.h: No such file or directory

    下载xtrans-1.2.7.tar.bz2,解压到src目录中,然后使用3.2同样的方法配置和安装xtrans。

    然后,继续编译libX11即可解决此问题。

3.5 X11/extensions/XKBproto.h: No such file or directory

    下载kbproto-1.0.6.tar.bz2,解压到src目录中,然后使用3.2同样的方法配置和安装xbproto。

    然后,继续编译libX11即可解决此问题。

3.6 X11/extensions/XI.h: No such file or directory

    下载inputproto-2.2.tar.bz2,解压到src目录中,然后使用3.2同样的方法安配置和安装inputproto。

    然后,继续编译libX11即可解决此问题。

3.7  xcb/xcb.h: No such file or directory

    下载libxcb-1.8.1.tar.bz2,解压到src目录中,然后使用3.2同样的方法配置和安装libxcb。在配置libxcb的过程中,会出现以下错误

3.7.1 configure: error: XCB requires xsltproc.

    那是因为ubuntu中没有xsltproc这个工具导致的可以使用下面命令安装一个:

  1. $ sudo apt-get install xsltproc  

    安装成功后,重新配置libxcb即可。这时,又会提示另外一个错误:

3.7.2 No package 'xcb-proto' found

    下载xcb-proto-1.7.1.tar.bz2,解压到src目录中,然后使用3.2同样的方法配置和安装xcb-proto。

    然后,继续配置libxcb即可解决此问题。但是编译时还提示错误,见3.7.3。

3.7.3  X11/Xauth.h: No such file or directory

    在编译libxcb时,提示这个错误。下载libXau-1.0.7.tar.bz2,然后使用3.2同样的方法配置和安装libXau。

    完成libXau的安装后,再编译libxcb,此时出现链接错误,见3.7.4。

3.7.4 cannot find -lXau

    由于已经完成了libXau的安装,因此libXau.so库已经存在libX11_install/lib目录中。这时编译器却找不到它。因此需要指定库的路径。在env.sh中添加LD_LIBRARY_PATH设置,如下所示:

  1. export PREFIX=/home/liyihai/downloads/libX11_install  
  2. export HOST=arm-arago-linux-gnueabi  
  3. export LD_LIBRARY_PATH=$PREFIX/lib  
  4. export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig  

    执行以下命令使其生效:

  1. $ source env.sh  
    继续编译libxcb,这时没有新的错误。编译成功后,使用以下命令进行安装:
  1. $ make install<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">    </span>  

    完成libxcb的编译和安装后,继续编译libX11,此时,没有新的错误出现!

4、安装

    安装libX11是最省事的,直接执行以下命令即可。

  1. $ make install  
5、 总结

    本文只是编译了libX11最基本的功和模块,还有其它模块没有包含在内。参考资料[4]的X11移植部分,就涉及了许多其它模块的下载和编译,本人觉得这过于复杂,因此自己总结出这篇文章,探索了libX11的基本安装过程。

   本文所有的源码都是从参考资料[1]处下载的。如果读者觉得在里面找起来不便,可以直接点击本文中各源码包的名字,可以跳转到我上传到csdn中的源码的下载页面。

参考资料

[1]X Window System Version 11 Release 7.7

[2]编译TinyX(安装移植X Window)

[3]TinyX的交叉编译 

[4]arm上tinyx的编译

[5] tinyX+GTK+2.0forarm
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
回答: 交叉编译libxcbX11是为了在特定的环境中使用XCB库和X11库。根据引用\[1\]中的描述,编译libxcbX11需要安装一些前提工具和依赖项,如Xtrans、xorgproto、xcb-proto、libXau等。具体的编译过程可以参考引用\[1\]中提供的步骤。在编译过程中可能会遇到一些问题,比如引用\[2\]中提到的找不到xcb-proto和libXau的错误。解决这些问题可以根据引用\[2\]中给出的配置和编译命令进行操作。最后,根据引用\[3\]中的描述,可能还会遇到xcb-util-wm的错误,如果有人知道如何解决这个问题,可以提供详细的解决办法。总之,交叉编译libxcbX11需要按照一定的步骤和依赖项进行操作,遇到问题可以参考相关的文档或寻求帮助。 #### 引用[.reference_title] - *1* *2* [交叉编译libxcbX11](https://blog.csdn.net/weixin_42892101/article/details/107852277)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [libX11、libxcb交叉编译](https://blog.csdn.net/hx0318/article/details/123196945)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值