ubuntu中手动编译源码安装Xorg-server过程中依赖关系的解决

在linux系统中手动编译源码安装软件包的过程是非常痛苦的,然而这一个多星期以来我是强忍住脾气体验了一把,虽然面对慢的令人发指的编译过程和令人不知所措的依赖关系,心里都是泪啊,但是整个过程下来,对于软件包依赖关系的理解也更深了一步。

由于需要在beagleboneblack上面安装图形界面,并要使用TI公司提供的SGX530驱动包进行图形加速,而直接安装Xorg之后的图形驱动fbdev是内核中默认的驱动,并没有针对显卡的图形加速功能。现在要安装针对SGX530的图形驱动,利用TI公司提供的bin文件。但是其提供的最新版本的bin文件是针对x server1.12.4进行编译的,而系统默认安装的x server最新版本为1.15.1,所以需要将x server版本降为1.12.4。

在尝试过安装完Xorg-1.15之后再安装xorg-server-1.12.4,提示缺少输入驱动evdev的情况下,再次编译安装和xorg-server-1.12.4对应版本的xf86-input-evdev-2.7.0时,仍无法启动X服务器,提示undefined symbol:udev_new,查找过后始终无法找到解决方法后,因为在网上我几乎没有找到和这个问题相关的资料,无奈之下只得放弃这种路子。于是重新开始在一开始就直接安装xorg-server-1.12.4,但是不清楚Xorg这个实现究竟包含了除xorg-server之外,还包含哪些模块,所以只能一步一步尝试。

Xorg是X11窗口系统的一个开源实现,大部分发行版都提供了Xorg,如果不用登录管理器启动X,则需要安装xorg-init软件包,其提供了startx和xinit工具。startx和xinit首先读取用户目录下的~/.xinitrc文件,如果~/.xinitrc不存在,则读取/etc/X11/xinit/xinitrc文件作为备用。其中会使用Twm作为窗口管理器,Xclock和Xterm(需要分别安装xorg-twm,xorg-xclock,xorg-xterm)。

注意:
- 如果出现问题,请检查日志文件 /var/log/Xorg.0.log. 看看有没有以(EE)(代表错误) 或 (WW) (代表警告)开头的内容。
- 如果 $HOME 中有空 .xinitrc 文件,请删除或修改它。否则 X 会显示空白屏幕,而且 Xorg.0.log 中没有任何错误。删除它会运行一个默认的环境。

1 安装xorg-server

下载x server1.12.4版本
wget http://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.12.4.tar.gz
./configure编译,遇到如下问题

checking whether build environment is sane… configure: error: newly created file is older than distributed files!
Check your system clock

系统时间有问题,一看我的系统时间还是在2000年,我勒个去,改!
sudo data -s “2012-02-21 18:45”,OK!再次编译,此错误不再出现,但是根据提示需要安装以下依赖包。

pkg-config
libpixman-1-dev
libx11-dev
x11proto-gl-dev
libglib2.0-dev
libgl1-mesa-dev
x11proto-xf86dri-dev
checking for SHA1 implementation… configure: error: No suitable SHA1 implementation found
./configure –help|grep libgcrypt –with-sha1=libc|libmd|libgcrypt|libcrypto|libsha1|CommonCrypto
sudo apt-get install pkg-config libpixman-1-dev libx11-dev x11proto-gl-dev libglib2.0-dev libgl1-mesa-dev x11proto-xf86dri-dev libgcrypt11-dev

安装完上述依赖之后,再次编译
./configure --with-sha1=libgcrypt

No package ‘xcmiscproto’ found
No package ‘bigreqsproto’ found
No package ‘randrproto’ found
No package ‘renderproto’ found
No package ‘fontsproto’ found
No package ‘videoproto’ found
No package ‘compositeproto’ found
No package ‘recordproto’ found
No package ‘scrnsaverproto’ found
No package ‘resourceproto’ found
No package ‘xineramaproto’ found
No package ‘xkbfile’ found
No package ‘xfont’ found
No package ‘pciaccess’ found

由于这是在编译,所以依赖包都要安装开发版(development,即后缀为-dev),一般情况下我们可以使用根据错误提示apt-cache search xxx来寻找我们需要安装的依赖包。按照上述提示,再次安装所需要的依赖包:
sudo apt-get install x11proto-xcmisc-dev x11proto-bigreqs-dev x11proto-randr-dev x11proto-render-dev x11proto-fonts-dev x11proto-video-dev libpciaccess-dev
sudo apt-get install x11proto-composite-dev x11proto-record-dev x11proto-scrnsaver-dev x11proto-resource-dev x11proto-xinerama-dev libxkbfile-dev libxfont-dev
./configure --with-sha1=libgcrypt终于顺利配置完成

make
sudo make install安装成功
安装xorg-server-1.12.4之后,直接启动X,根据/usr/var/log/Xorg.0.log中的信息,在未添加TI的显卡驱动的时候提示缺少模块fbdev,因为Xorg默认加载通用驱动fbdev作为图形驱动,添加TI的图形驱动模块之后,Xorg加载pvr作为图形驱动,但是又提示缺少evdev输入驱动,因为evdev默认作为鼠标、键盘等输入的驱动。

2 安装evdev输入驱动

下载与xorg-server-1.12.4版本相对应的输入驱动xf86-input-evdev-2.7.0.tar.gz
wget http://xorg.freedesktop.org/archive/individual/driver/xf86-input-evdev-2.7.0.tar.gz
./configure --prefix=/usr
/usr/lib/pkgconfig/xorg-server.pc为空,系统无法识别xorg-server的信息,导致编译无法继续进行。重新make install后发现xorg-server.pc正常,编译可以继续进行。

sudo apt-get install xutils-dev libudev-dev
make
sudo make install

启动X的时候再次失败,提示两个错误

(EE) AIGLX error: dlopen of /usr/lib/arm-linux-gnueabihf/dri/pvr_dri.so failed (/usr/lib/arm-linux-gnueabihf/dri/pvr_dri.so: cannot open shared object file: No such file or directory)
(EE) XKB: Couldn’t open rules file /usr/share/X11/xkb/rules/evdev

3 安装XKB键盘驱动

根据错误提示是XKB提示的错误,在网上搜索后发现时键盘驱动的问题。两个实际上都是文件不存在,第一个中pvr_dri.so不存在,第二个中rules文件夹不存在。xkb文件夹下只有一个compiled文件夹:

ubuntu@ubuntu-arm:/usr/share/X11/xkb/compiled$ ls -l
total 4
-rw-r–r– 1 root root 644 Jul 15 13:20 README.compiled

在网上查询说xkb软件已经安装,而xkb文件夹下却没有相应的数据,所以需要重新安装xkb配置数据:
sudo apt-get install xkb-data

ubuntu@ubuntu-arm:/usr/share/X11/xkb$ ls -l
total 28
drwxr-xr-x 2 root root 4096 Jul 15 14:41 compat
drwxr-xr-x 2 root root 4096 Jul 15 13:20 compiled
drwxr-xr-x 4 root root 4096 Jul 15 14:41 geometry
drwxr-xr-x 4 root root 4096 Jul 15 14:41 keycodes
drwxr-xr-x 2 root root 4096 Jul 15 14:41 rules
drwxr-xr-x 13 root root 4096 Jul 15 14:41 symbols
drwxr-xr-x 2 root root 4096 Jul 15 14:41 types

之后提示的错误变为如下:

cannot find /usr/bin/xkbcomp
(EE) Error compiling keymap (server-0)
[ 2752.645] (EE) XKB: Couldn’t compile keymap
Keyboard initialization failed. This could be a missing or incorrect setup of xkeyboard-config.

有网友说安装x11-xkb-utils软件包后有效,安装之sudo apt-get install x11-xkb-utils,安装完成之后,文件/usr/bin/xkbcomp就出现了,然后直接启动XX -config usr/share/X11/xorg.conf.d/60-outputs.conf -verboseps -A后发现X已经成功启动!!!

4 图形应用程序启动测试

在X服务器已经成功启动的情况下,我迫不及待的需要用一个图形应用程序来验证X服务器可以正常运行,于是sudo apt-get install x11-apps,然后启动计算器xcalc,在beagleboneblack的显示屏幕上已经成功地运行了计算器程序,并且触屏也正常工作。下一步就是安装gnome-session来看一下加上了针对SGX530的TI的图形加速的桌面效果如何。

期待中!

祝枫
2016年7月15日于深圳

ubuntu中手动编译源码安装Xorg-server过程中依赖关系的解决相关推荐

  1. Ubuntu下Ruby的下载和编译源码安装

    1.Ruby的下载 Ruby可以在 Ruby 官网上下载,如果想获取更多的Ruby版本,可以到淘宝镜像网站下载. 2.Ruby的编译源码安装 解压 首先把下载下来的源码压缩包解压到自己指定的目录 编译 ...

  2. mac 编译源码安装 opencv

    无法直接 brew install opencv时,可以按照本教程安装. 第一步:brew install cmake 第二步:编译源码安装 opencv,参照Mac系统下的Opencv开发环境搭建- ...

  3. Ubuntu16 编译源码安装MXNet 可变卷积Deformable-ConvNets GPU版

    [引言]最近接手了公司的关于虫子识别的项目,使用MXNet框架开发,但是实际用的是Deformable-ConvNets. Deformable-ConvNets为微软研究研究院提出的可变卷积网络,可 ...

  4. linux源码下载阿帕奇,Ubuntu 12.04下源码安装Apache

    环境:Ubuntu 12.04 [简单安装] 一般第一次安装Apache都较为顺利. 1. 下载并解压 root@ubuntu:/home/qy/share#tar zxvf httpd-2.2.22 ...

  5. linux中的httpd源码安装方法

    对于源码我们应该知道所谓源码就是用特定语言写成的文本,如C语言.其次源码安装 的好处是我们可以使用最新的版本和最新的功能,可以加入各种选项来个性配置,也可 以自定制使其更符合自己的习惯,而且在任何平台 ...

  6. ubuntu 16.04下源码安装opencv3.4

    源码安装opencv,遇到了一些小波折,这里做个备忘吧. 首先要下载源码,路径: https://github.com/opencv/opencv 下载成功后,在opencv的根目录下执行下面操作: ...

  7. CentOS中通过编译源码包的方式安装Git

    场景 这里介绍通过源码包安装的方式 源码文件下载地址: - 地址1:https://www.kernel.org/pub/software/scm/git/ - 地址2:https://github. ...

  8. Windows10编译源码安装Aleth(Ethereum C++ client, tools and libraries)

    这篇文章记录本人安装Ethereum c++客户端Aleth的过程. 本人的系统环境 本人系统:windows10, 64bit, 预先安装: visual studio 2017或者2019.本人的 ...

  9. Linux飞鸽传书源码,Ubuntu 7.10下源码安装飞鸽传书IpMsg

    IPMsg 是一款局域网内即时通信软件, 基于 TCP/IP(UDP),可运行于多种操作平台(Win/Mac/UNIX/Java), 并实现跨平台信息交流. 不需要服务器支持,支持文件/文件夹的传送, ...

最新文章

  1. keil5函数 默认返回值_C++的返回值return
  2. 003_Maven插件
  3. 如何安装SAP JCo3
  4. php字符串从a到z排序,js怎么实现中文按照A-Z排序
  5. python中isleap_Python学习笔记(十三)系统
  6. Hystrix面试 - 深入 Hystrix 断路器执行原理
  7. 让低版本浏览器支持html5的标签
  8. Leetcode每日一题:27.remove-element(移除元素)
  9. 附上堆和栈的区别 (转贴)
  10. dw php获取当前时间,tp5时间戳转日期的方法
  11. 自动阅卷系统/自动阅卷机/网上阅卷
  12. 39份AICon全球人工智能与机器学习技术大会 · 北京站2021(PPT汇总)
  13. 实战ASP.NET访问共享文件夹
  14. 苹果三代耳机_关于苹果蓝牙耳机的一些事情
  15. 光子晶体中的平面波展开法学习
  16. 解决阿里云ESC启动kube-proxy服务时出现错误 亲测有效
  17. mac无法更新计算机的启动配置,MacOS 更新遇到的问题及重装系统
  18. 使用IE浏览器,禁止访问,显示 Internet Explorer增强安全配置正在阻止来自下列网站的从应用程序中的内容
  19. Worldwind下载
  20. 小白开发微信小程序52--测试小程序

热门文章

  1. PyQT5-QProgressBar
  2. Spring使用注解方式的学习笔记
  3. centos6.5 mysql5.6主从复制
  4. [Java_kaikeba]java中堆和栈的区别(对象变量的理解)
  5. ORM(Object Relational Mapping,对象/关系映射)
  6. 数据库和 MIDP,第二部分:数据映射
  7. 【恋上数据结构】图代码实现、BFS、DFS、拓扑排序
  8. 【C++】运算符重载关于const的分析(超详细)
  9. 【matplotlib笔记】plt.subplot()绘制子图
  10. Linux不讲武德——开机无法进入登录界面 卡在进度条就不动了