跳轉到內容

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 設為預設伺服器
華夏公益教科書