歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 從源碼建立XFree86

從源碼建立XFree86

日期:2017/2/28 15:59:08   编辑:Linux教程

原文:

Building XFree86 from a Source Distribution
http://www.xfree86.org/4.3.0/BUILD.html
26 February 2003

--------------------------

這個文檔描述了怎樣從源代碼發行版構建XFree86,要結合特定操作系統的README文件來使用它。


-----------------------------------
注:構建XFree86之前,最好參考特定操作系統的README文件,這些文件包含了在你的操作系統下成功構建XFree86所需的詳細信息。

我們強烈推薦使用GCC構建XFree86,但是通常也可以使用各個平台的本地編譯器。


---------------------------

1、怎樣得到XFree86 4.3.0 的源碼


推薦的方法是從XFree86的CVS庫中獲取XFree86 4.3.0 的源碼。有多種途徑可以做到這一點,可以在我們的CVS頁面找到xf-4.3.0發行版的標簽。


另一個途徑是再XFree86的FTP站點下載4.3.0的tar格式源碼包。步驟如下:


*XFree86 4.3.0的源碼包含在 X430src-1.tgz, X430src-2.tgz, X430src-3.tgz, X430src-4.tgz,X430src-5.tgz, X430src-6.tgz 和 X430src-7.tgz 中。這些文件可以在ftp://ftp.xfree86.org/pub/XFree86/4.3.0/source/ 或XFree86站點的類似地址中找到。X430src-4.tgz 和 X430src-5.tgz包含了字體,X430src-6.tgz 和 X430src-7.tgz包含了文檔。X430src-1.tgz, X430src-2.tgz 和 X430src-3.tgz包含了其他所有的東西。如果你不需要字體和文檔,可以只下載X430src-1.tgz, X430src-2.tgz 和 X430src-3.tgz。

*運行下面的命令解壓每個文件,確保足夠的空間,全部源碼大約需要305M,還要一些空間編譯二進制文件。

gzip -d < X430src-1.tgz | tar vxf -
gzip -d < X430src-2.tgz | tar vxf -
gzip -d < X430src-3.tgz | tar vxf -
gzip -d < X430src-4.tgz | tar vxf -
gzip -d < X430src-5.tgz | tar vxf -
gzip -d < X430src-6.tgz | tar vxf -
gzip -d < X430src-7.tgz | tar vxf -


如果你已經有了一份XFree86 4.2.0源碼的拷貝,可以從ftp://ftp.xfree86.org/pub/XFree86/4.3.0/patches/下載補丁來升級到4.3.0。補丁的下載和使用信息可以在這個發行版的REDAME文件的“How to get XFree86”段找到。

所有的方法都將產生一個主源碼目錄,叫做xc。


---------------------------

2、構建之前先配置源碼


在大多數情況下,沒有必要做任何配置。


如果你確實想要改變配置,建議你先進入 xc/config/cf 目錄,復制xf86site.def為host.def。然後通過閱讀host.def文件,根據你的配置設置你想要的參數。你也可以通過查看.cf文件,找出針對你的操作系統的默認設置。


通常遵循的規則是,只修改你理解的選項,並且有好的修改原因。修改默認配置容易產生一些問題。很多配置選項記錄在 xc/config/cf/README。


如果你只使用源代碼的x430src-1.tgz,x430src-2.tgz和x430src-3.tgx部分,你需要定義BuildFonts為NO。


---------------------------

3、使用符號鏈接的目錄來構建


推薦的做法是,用一個符號鏈接的目錄來構建XFree86。這樣可以保證源代碼目錄在構建過程中不被修改,還有以下好處:

*當使用CVS維護源碼樹的更新時,更新進程不會被非CVS控制的文件所干擾。

*可以用同樣的源碼為不同的操作系統或架構構建XFree86,用只讀的NFS共享。

*可以用不同的配置構建XFree86,只需要在每一個構建樹中放一個host.def的拷貝,並且分別定義。


用下面步驟建立一個符號鏈接目錄:
*在構建樹的頂層創建目錄,通常新建在xc目錄的同層,但不是強制性的。
cd [xc目錄]
mkdir build
*用“lndir”命令創建影子樹:
lndir ../xc
注:如果需要的話,最好使用xc目錄的絕對路徑。


如果你的系統沒有安裝lndir,你可以用下面的命令從XFree86的源碼安裝它:
cd xc/config/util
make -f Makefile.ini lndir

cp lndir [some directory in your PATH]


隨著時間的推移,可能在構建樹中產生一些陳舊的鏈接,例如,當源碼中的文件被刪除或重命名。可以在構建目錄中運行“cleanlinks”腳本來清除。很少會因為一些變化而要從頭開始重新創建構建樹。如果有這樣的情況,那可能是構建過程中問題。最好的方法是刪除構建樹,然後按上面的步驟重新構建。


----------------------------

4、構建和安裝


構建之前,讀一下xc/programs/Xserver/hw/xfree86/doc中與你相關的特定操作系統的README。一旦特定操作系統的詳情已經有了描述,就可以到你的構建目錄(xc目錄或之前建立的影子樹),運行“make World”,如果有必要,就帶上README中描述的BOOTSTRAPCFLAGS設置,但是XFree86支持大多數操作系統已經不需要BOOTSTRAPCFLAGS。一個明智的做法是將stdout和stderr重定向到World.log,以便追蹤構建過程中可能產生的問題。


在類Bourne的shell(Bash,Korn shell,zsh,等)中使用如下的命令:
make World > World.log 2>&1
C-shell(csh,tcsh,等)中使用:
make World >& World.log
你可以根據構建的進展運行:
tail -f World.log


構建完成後,如果有什麼問題,你需要檢查World.log文件。如果沒有問題,你就可以安裝二進制文件了。默認的“make World”過程會忽略錯誤,以便盡可能的構建成功。如果在這一步中有無法解決的問題,安裝過程將會失敗。解決問題後重新開始構建時,只需要運行“make”。如果在解決問題的過程中改變了Imakefile或其它構建配置,需要重新運行“make World”或“make Everything”。


如果你想要“make World”在第一個錯誤是結束,用下面的命令來替換前面所講的:
在類Bourne的shell中:
make WORLDOPTS= World > World.log 2>&1
在C-shell中:
make WORLDOPTS= World >& World.log


對於安裝,運行“make install”和“make install.man”。確保/usr/X11R6中有足夠的空間用於安裝。如果你想要安裝在/usr之外的文件系統,需要在新建一個指向/usr/X11R6的符號連接。


-------------------------

5、重新配置服務器


為服務器構建不同的設置,或帶有不同驅動設置的服務器。
1.確保新的驅動源碼在正確的位置(例如,驅動源碼應該在xc/programs/Xserver/hw/xfree86/drivers下的一個子目錄)。
2.修改host.def(你要構建的服務器)中定義的服務器設置,也可以根據你的需要修改驅動列表。
3.在xc/programs/Xserver中運行:
make Makefile
make Makefiles
make includes
make depend
make


------------------------

6、其他有用的make目標


下面是一些在XFree86的Makefile中定義的其他有用的目標:


*Everything make Worle之後,make Everything會做任何make World可以做的,除了清理樹。這是一個為源碼打補丁後、快速重新構建樹的方法。但它並不是100%可靠的。最好是用make World做一次完整的構建。
*clean 用於對源碼樹進行局部清理。刪除目標文件和生成的手冊頁,但是保留Makefile和生成的依賴文件。執行make clean後,你需要重新運行以下命令來重新構建XFree86:
make include
make depend
make
*disclean 對源碼樹進行完全清理,刪除所有的生產文件。make disclean後,只能用make World重新構建XFree86。
*includes 生產所有的可生成頭文件和構建所需的符號鏈接。make clean時,這些文件會被刪除。

*depend 重新計算Makefile中各個目標的依賴關系。根據操作系統,依賴關系儲存在Makefile,或一個獨立的文件中,叫做.depend。這目標需要用到make includes生產的頭文件。VerifyOS 顯示檢測到的操作系統的版本。如版本號與你的系統不匹配,你可能要在host.def中設置並且向[email protected]報告這個問題

Copyright © Linux教程網 All Rights Reserved