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

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日于深圳

你可能感兴趣的:(Operation,System,Embedded,System)