跳转到内容

X11 构建指南

来自维基教科书,开放书籍,开放世界

作者 · 历史 · 打印 · 许可证

简介 · 配置 · 构建 · 启动会话 · 启动程序 · 字体 · 窗口管理器 · Xt 客户端 · 政治历史 · 参考资料和链接

补充: 命令

编辑此模板

X11,从参考实现到 Xorg 6.9,使用自己的“imake”构建系统。客户端、服务器和库都在一个构建树中。(只构建树的一部分非常困难;必须构建整个树。)一些东西,比如 Mesa 和 Freetype,被修改为可选地成为树的一部分。

Xorg 7.0 用一套基于 GNU autoconf 构建系统的模块替换了它。这创建了一个复杂的包和依赖关系系统。为同时实现 Xorg 6.9rc1 和 Xorg 7.0rc1 的两个系统而产生的问题,延迟了第一个候选版本的发布。

Imake 系统

[编辑 | 编辑源代码]

为了用 imake 构建 Xorg,您首先需要下载并解压源代码包。Xorg 6.9rc1 的包叫做xorg-x11-6.8.99.901.tar.bz2可以从 这里 获取。现在 Xorg 6.9 和 7.0 的最终版本已经发布,您可以使用镜像列表 这里 找到它们。

构建系统的粗略概述

  1. 创建一个“host.def”文件(可选)。
  2. 执行“make World”来配置和构建树。
  3. 执行“make install”和“make install.man”来安装所有内容。

您可以使用“host.def”文件来定制您的构建。如果您没有创建它,那么您将使用默认设置,这些设置应该已经针对您的操作系统进行了调整。

文件xc/BUILD更详细地描述了构建。

是的,您必须构建整个树才能构建一个部分。例外情况是,有时您可以进行服务器端或无服务器端构建。请参阅我们关于 #构建静态服务器 的部分,以及xc/config/cf/xorgsite.def.

构建示例

[编辑 | 编辑源代码]

在以下示例中,root 已授予我们对/usr/local/src的写访问权限。我们下载了 Xorg 6.9 的第一个候选版本(/usr/local/src/xorg-x11-6.8.99.901.tar.bz2).

)。我们已经安装了 Xorg 6.8.2。我们在构建期间运行它,因此我们有多个 xterm 来输入 shell 命令。

使用一个“xterm”,将源代码解压到/usr/local/src,创建/usr/local/src/xc:

$ cd /usr/local/src
$ bzcat xorg-x11-6.8.99.901.tar.bz2 | pax -rv

xc/BUILD所述,我们可以使用 lndir 创建一个指向源代码的符号链接的影子树。(这可以防止对象出现在源代码树中。)因为“lndir”是 X 的一部分,我们已经安装了 Xorg 6.8.2,所以我们可以运行“lndir”

$ mkdir xcbuild
$ cd xcbuild
$ lndir ../xc

请注意,当前目录是/usr/local/src/xcbuild。现在我们将跳过创建config/cf/host.def,并使用默认配置。现在该调用 Makefile 了。我们必须运行make World,因为没有其他正确的方法来配置和启动构建。如果我们运行 Bourne shell

$ make World > World.log 2>&1

运行“make”的“xterm”现在很忙。为了查看日志,我们在第二个 xterm 中运行“tail”

$ cd /usr/local/src/xcbuild
$ tail -f World.log

最终,日志会宣布 Xorg 的构建已完成。

我们安装(到默认的/usr/X11R6,从而覆盖了 Xorg 6.8.2 的大部分内容)

$ sudo make install
$ sudo make install.man

请注意

  1. 如果我们的系统上“sudo”不起作用,那么我们将使用“su”。
  2. 可以在执行安装之前退出 X11。另一种选择是在 X11 运行时覆盖它的大部分内容。这可以工作,但稍微不安全一些。

如果需要,退出 X 并运行xorgcfg来创建配置文件。

构建静态服务器

[编辑 | 编辑源代码]

可以修改树以仅构建静态 X 服务器。如果您需要从树的较新版本中获得更好的硬件支持,这将很有用。此外,这将跳过构建库、客户端和单独的服务器模块。(X11 协议非常稳定,因此较新的服务器可以与较旧的库和客户端一起使用。)

OpenBSD 提供了一个示例host.def。他们的示例host.def是下一个场景的基础。如果您有静态构建 X 服务器的理由,您可以执行与下一个场景类似的操作。

场景:我们已经安装了 Xorg 6.8.2。我们需要 Xorg 6.9rc0(第 0 个候选版本)中更好的“ati”驱动程序,但我们需要跳过 6.9rc0 树的大部分内容以避免错误。

解决方案:我们将静态构建 6.9rc0 服务器。

在树中的config/cf/host.def创建此文件。如果您有一个影子树,请将其放在影子树中。该文件是

#define InstallEmptyHostDef

#define BuildServersOnly        YES

/*
 * you may also restrict the drivers that are built by editing and
 * uncommenting the line below
 */
#define XF86CardDrivers              wsfb ati

#define UsbMouseSupport                 NO
#define DoLoadableServer                NO
#define XnestServer                     NO
#define XVirtualFramebufferServer       NO
#define XprtServer                      NO
#define BuildGlxExt                     NO
#define BuildGLXLibrary                 NO
#define BuildGLULibrary                 NO
#define BuildRenderLibrary              NO
#define BuildLBX                        NO
#define BuildType1                      NO
#define BuildFreeType                   NO
#define BuildXTrueType                  NO
#define BuildSpeedo                     NO
#define BuildFonts                      NO
#define BuildXFree86ConfigTools         NO

“XF86CardDrivers”行已更改为仅指定“wsfb”和“ati”。我们的驱动程序是“ati”。我们有一个第二个驱动程序,它避免了高级硬件功能,以防“ati”出现故障。OpenBSD 上的“wsfb”驱动程序使用内核帧缓冲区,而不是重新配置硬件。在 Linux 上,帧缓冲区驱动程序是“fbdev”。在 i386 硬件上,“vga”和“vesa”可能是不错的选择。使用以下行之一

#define XF86CardDrivers              wsfb ati
#define XF86CardDrivers              fbdev ati
#define XF86CardDrivers              vga ati
#define XF86CardDrivers              vesa ati

现在开始构建

$ make World > World.log 2>&1

构建最终会因缺少某个“XlibConf.h”而停止;我们的 host.def 跳过了这一步。(这是一个错误;Xorg 6.8.2 不需要“XlibConf.h”文件。)该文件可能是在构建 libX11 时生成的,而我们跳过了这一步。对于服务器而言,我们实际上并不需要它。在xc/lib/X11/XlibConf.h:

$ touch lib/X11/XlibConf.h

创建一个空文件。

$ make Everything >> World.log 2>&1

现在继续构建最终构建完成。服务器出现在xc/programs/Xserver/Xorg。因为此文件是静态链接的,所以它是唯一需要安装的文件。我们将它安装到/usr/X11R6/bin/Xorg69/usr/X11R6:

$ cp -p programs/Xserver/Xorg /usr/X11R6/bin/Xorg69

以补充我们位于

$ cd /usr/X11R6/bin
$ chown root:wheel Xorg69
$ chmod a+xs Xorg69

的 Xorg 6.8.2 安装。现在我们需要测试服务器。首先,如果我们现在正在运行 X,请退出 X 到控制台。然后将我们的新服务器设置为 root,以便它可以使用视频硬件使用 Xorg69 -configure 生成新的配置文件,然后使用 xinit -- /usr/X11R6/bin/Xorg69 测试它。如果它能工作,请通过更改

$ cd /usr/X11R6/bin
$ rm X
$ ln -s Xorg69 X

/usr/X11R6/bin/X

符号链接,将 Xorg69 设为默认服务器
华夏公益教科书