原文地址: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系统):

[plain] view plaincopy
  1. $ mkdir libX11_install

2.1 环境变量设置

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

[plain] view plaincopy
  1. export PREFIX=/home/liyihai/downloads/libX11_install
  2. export HOST=arm-arago-linux-gnueabi

将上述内容保存为env.sh,然后执行以下命令使其生效:

[plain] view plaincopy
  1. $ source env.sh

2.2 configure

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

[plain] view plaincopy
  1. $ ./configure --prefix=$PREFIX --host=$HOST

配置结果如下:

[plain] view plaincopy
  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、编译

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

[plain] view plaincopy
  1. $ make

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

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

[plain] view plaincopy
  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。

[plain] view plaincopy
  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中的环境变量设置脚本内容改为:

[plain] view plaincopy
  1. export PREFIX=/home/liyihai/downloads/libX11_install
  2. export HOST=arm-arago-linux-gnueabi
  3. export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig

然后再次使用以下命令使其生效

[plain] view plaincopy
  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这个工具导致的可以使用下面命令安装一个:

[plain] view plaincopy
  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设置,如下所示:

[plain] view plaincopy
  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

执行以下命令使其生效:

[plain] view plaincopy
  1. $ source env.sh

继续编译libxcb,这时没有新的错误。编译成功后,使用以下命令进行安装:

[plain] view plaincopy
  1. $ make install<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">    </span>

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

4、安装

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

[plain] view plaincopy
  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

X11 xcb 交叉编译相关推荐

  1. KDDockWidgets源码编译及安装

    简介 KDDockWidgets 是由 KDAB(官网) 编写的 Qt Dock 小部件库,适用于替换 QDockWidget和实现 Qt 中缺少的高级功能. 功能特点: 提供 QDockWidget ...

  2. ffmpeg 纯静态编译,以及添加自定义库流程摘要

    需求: 1. 纯静态编译ffmpeg ,即ldd ./ffmpeg 的结果是:not a dynamic executable 2.  修改ffmpeg 项目,添加自定义功能库 3. 自定义库由c++ ...

  3. [irisctf 2023] rev

    逆向题最多,有7道,只会4个 rev baby_rev 类似于签到的题 s -= 105;v6 = v6 - 114 + 1;v7 = v7 - 105 + 2;v8 = v8 - 115 + 3;v ...

  4. 深夜磨刀,Linux Graphics Stack 概述 | Linux 驱动

    哈喽,我是老吴. 今天给大家分享一些关于 Linux 图形显示的要点,这些要点构成了 Linux 图形显示的框架. 希望对大家有帮助! 1. 引言 1) 什么是 Graphics? 当我们看到一个东西 ...

  5. 国人对国产操作系统的误会

    我觉得很多国人对国产操作系统上有误会,"这不就是在linux系统上换一个皮肤嘛",这种评论我听到的最多.所以我觉得有必要给对国产操作系统有误会的人做个科普.让大家了解这么多年我们在 ...

  6. linux 图形库编程资源

    open source Embedded Linux Graphics System Software ------------------------------------------------ ...

  7. python3GUI--网络收音机By:PyQt5(附源码)

    文章目录 一.前言 二.预览 1.推荐 2.城市电台 3.国家电台 4.网络电台 5.手动添加音频 6.QSS 三.源代码 1.主界面(Radio_Engine.py) 2.电台引擎(Radio_En ...

  8. ubuntu 交叉编译 armv7_32 ffmpeg x264(已完成)

    文章目录 1.交叉编译x264(x264要先编译,因为到时编译ffmpeg时要用到x264的头文件和库) 2.接着我们编译ffmpeg FFmpeg和X264的交叉编译环境 arm linux交叉编译 ...

  9. linux+arm+移除X11,关于ARM GTK/X11的问题,懂的指点一下

    提供简要移植(交叉编译)过程 以编译arm11架构处理器为列 1)   下载并安装scratchbox 连接:h t t p://www.scratchbox.org/ 以上网的文档里有教程也有相关下 ...

  10. Firefly AIO-3399ProC开发板与PC端部署Qt5.12.2交叉编译环境

    文章目录 前言 一.Qt是什么? 二.开发部署环境 三.部署Qt5.12.2交叉编译环境 3.1 安装前的相关包下载及环境准备 3.2 在开发板端部署Qt5.12.2交叉编译环境 3.3 在PC端部署 ...

最新文章

  1. 赠书|大厂面试喜欢考算法,该怎么破?
  2. python发明者叫什么-编程语言简史:有人不喜欢花括号,于是他发明了 Python
  3. oracle into多个变量,Oracle中merge into的使用:该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据....
  4. 基地址和偏移地址的概念
  5. 中国版LinkedIn呼之欲出
  6. php中get_featured_posts()是什么意思,WordPress的Get_Posts()函数详解
  7. POJ1061 青蛙的约会(扩展欧几里得)题解
  8. 【Spring】学习SpringAOP
  9. 微信聊天api接口调用代码
  10. 云客Drupal源码分析之节点表单NodeForm
  11. hping3对某网站发起ddos攻击
  12. 多个工作表数据汇总怎么做?
  13. 图片标注软件labelImg使用指南
  14. 中小企业常遇到这些问题,看APS系统是如何解决的
  15. WMS智能仓储系统——保姆式服务系统
  16. JAVA第二次作业《胖瘦程度计算》
  17. JAVA计算机毕业设计漫画网站系统(附源码、数据库)
  18. C#使用OleDB操作ACCESS插入数据时提示:参数 @p_Contract 没有默认值
  19. 计算机视觉的最终表现!三维重建技术
  20. 学生网课网页设计成品 在线视频学习类网页制作 三层结构网页模板 静态HTML注册登录网页模板 学生毕业设计网页制作作品 网校类网页代制做

热门文章

  1. 考研小作文真题、范文及讲解
  2. java 上传文件 md5_上传到文件选择器时的md5校验和
  3. 艾永亮:不做读书人生意的书店,如此不正经却年赚超12亿?
  4. 山东计算机设计大赛,山东大学控制学院本科生获中国大学生计算机设计大赛国家级二等奖...
  5. 计算机系统建模_包图
  6. 日常开发中linux中最常用的100条命令
  7. tp5 以及网站架构个人心得
  8. 记一次机房断电办公室网络瘫痪的恢复经过
  9. 三/五/七/九点二次平滑法
  10. matlab中四阶龙格库塔算法、欧拉算法和改进的欧拉算法的总结