6.8 安装X窗口系统
UNIX系统的主要目标就是多用户、多任务,而且允许多个用户远程登录并发执行任务。这种设计哲学同样被带到了X窗口系统中。X的实现者将X设计为客户/服务器的架构,应用程序相当于客户端,它们不需要关心具体的显示和用户输入,而由X服务器负责管理显示设备和输入设备。应用程序只需要将请求,比如“绘制一条直线从点A到点B”,发送给X服务器,而由X服务器负责将其绘制到具体的显示设备上。X服务器也会将用户的输入(包括鼠标、键盘等输入事件),转发给对应的应用。
X将协议相关实现封装到了一个库中,开发者将这个库称为Xlib。后来因为效率问题,又开发了xcb来替代Xlib。Xlib中封装的只是X的核心协议,X使用扩展的方式扩充X协议,其他扩展协议可以在单独的库中实现。
作为类UNIX的图形系统的基础,X的复杂是难以避免的。也恰恰是因为X的复杂,很多人提及X的安装就会谈虎色变。虽然X系统非常庞大,实际上它也是有章可循的。本节笔者就带领读者从头安装一个X窗口系统。鉴于X的安装过程比较烦琐和复杂,我们提供了一个安装脚本build-X11.sh。但是笔者建议读者尽量使用手动的方式安装,这样可以在思考和解决问题中不断提高。遇到自己实在解决不了的问题时再参考这个脚本,从而达到更好的学习效果。
6.8.1 安装M4宏定义
X定义了一些公用的M4宏,并将它们放在软件包util-macros中。X的各个组件的配置脚本中将使用M4宏,因此我们首先来安装M4宏,方法如下:
在第7章讨论窗口管理器的构建脚本时,我们介绍了M4宏,读者可以参考那里的讨论。