国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在 Linux 下建立軟體套件

2019-11-17 05:29:07
字體:
來源:轉載
供稿:網友

  作者:Mendel Leo Cooper
http://personal.riverusers.com/~thegrendel/

譯者:J.S.Lin

這是份廣泛指引文件,可用來建立"一般性" UNIX 軟體發行套件在 linux 下.

1. 簡介

很多軟體套件提供給各式 UNIX, 包括 Linux, 是將原始碼檔案壓縮成檔

案(archives)而發行的. 相同的套件可以建立以便在不同對象的機器上執行, 并

且這可節省些軟體成品而免於必須制造各種發行版本. 軟體套件的單一發行版本

結果能執行在各式實體(incarnations), 像是在 Intel 機器, DEC Alpha, RISC

工作站, 甚至是電算主機. 但不幸的是, 這將"建立"軟體的工作推給了最終使用

者(end user), 實際上是"系統治理者", 即坐在鍵盤前的同志...你. 雖然這樣,

認真來說這過程并不是像它看起來那麼可怕或不可思議, 就像這指引所解說一

樣.

 

2. 從取得開始

你有下載或其它方式取得一個軟體套件. 最常見情況是它被打包起來 (tarred)

而且被壓縮 (gzipped), 成為 .tar.gz 或 .tgz 形式. 首先將它復制到一工作目

錄. 然後用 untar 和 gunzip 處理它. 處理它最適合的命令是 tar xzvf

filename, 這□的 filename 當然是軟體檔名. 這種解開程序經常會安裝適當檔

案在它所開啟的子目錄中. 注重的是假如套件名稱有 .Z 結尾, 那將要使用

uncomPRess PACKAGENAME, 然後再用 tar xvf PACKAGENAME 而不要用之前的步

驟.

 

有時打包起來的檔案必須 untarred 且安裝自使用者的家目錄(home

Directory), 或者也許是在某個其它目錄, 像是套件設定資料所指定的. 假若你

設法要 untar 它而得到的是錯誤訊息, 也許就是那原因. 讀一下套件文件, 非凡

是 README 和/或 Install 檔案, 假如存在, 編輯設定檔案和/或 Makefiles 如

所需要的, 即與安裝指示符合. 注重的是通常 不 去更改 Imake 檔案, 因為這可

能有未預期的結果. 某些軟體套件答應自動安裝程序,它是藉由執行 make

install 來放置二元碼在適當系統位置.

 

偶而, 你可能需要使用 patch檔案,該檔案有列出原本的與新的原始檔案的差異,

來升級或加入臭□(bug)的修正至未打包(unarchived)的原始檔案. doc檔案與/或

README 檔案會告知你這算不算該情況. 對於使用 Larry Wall 的強力 修

補(patch) 工具之正常的語法(syntax)是 patch < patchfile.

 

你現在可以開始進行 建立 過程階段了.

 

3. 使用 Make

Makefile 是建立過程的重點. 在它的最簡單的形式, Makefile 就是個 script

,它是用來編譯或建立"二元碼",套件的可執行部分. Makefile也可以提供軟體套

件升級的工具,而不需要重新編譯每一個在套件中的原始檔案, 但其有不同的情

況(或是不同的約定).

 

某些特點是, Makefile 開啟 cc 或 gcc. 這實際上是個前處理器, C (or C++)

編譯器, 和 連結器, 按照那個順序. 這過程轉換原始碼(source)為可真正去執行

的二元碼(binaries).

 

下指令 make 通常只要鍵入 make. 這通常建立討論中的套件所有需要的可執行

檔. 然而, make 也做其他工作,像是安裝檔案至合適的目錄 (make install) 而

且刪除舊的 object 檔案 (make clean). 執行 make -n 答應預覽建立過程, 就


是列出所有 make 所喚起的(triggered)所有命令, 但沒有真的去執行它們.

 

只有在最簡單的軟體使用一般性的 Makefile. 較復雜的安裝需要根據函式

庫(libraries), include 檔案以及你個別機器資源所在目錄來量身定制. 這非凡

是當需要 X11 libraries 來安裝建立時. Imake 和 xmkmf 可完成這樣的工作.

 

引用自 man page,Imakefile 是個"
考 Imakefile 根據你的系統造出合適的 Makefile. 然而,幾乎在所有的情況下,

你要執行 xmkmf, 它是要下 imake 指令用的 shell script, 也就是個前端介

面(front end). 察閱一下內附在軟體檔案間的 README 或 INSTALL 檔案以取得

非凡的指示. 至於更具體的步驟分析,請閱讀 imake 和 xmkmf 的 man pages.

 

要知道的是 xmkmf 和 make 可能需要以 root 身分來下指令, 非凡是當 make

install 來搬移二元碼到 /usr/bin 或 /usr/local/bin 目錄. 以一般使用者的

身分而不具 root 權力 來使用 make 將可能會導致 write
access denied 的錯

誤訊息, 因為你缺少寫入(write)至系統目錄的權限. 也檢查一下, 所造出來的二

元碼對你與任何其他適用的使用者有適合的執行(execute)權限.

 

下指令 xmkmf 來使用 Imake 檔案, 建立一個新的而且適合你系統的 Makefile.

正常地下指令 xmkmf 都會附加 -a 引數, 因而自動地做 make Makefiles, make

includes, 和 make depend 的動作. 這會設定變數(variables)和給定函式

庫(library) 位置給編譯器和連結器. 有時會沒有 Imake 檔案, 引而代之的是有

INSTALL 和 configure 的 script, 也會到這樣的目的. 注重的是假如你要執行

configure, 那要下指令 ./configure 以確保在目前目錄下正確的 script

configure 是被呼叫. 在大部分的情況, 在發行套件中的 README 檔案會說明安

裝步驟.

 

通常一個好的方法是從外觀檢視一下 Makefile 是 xmkmf 或 其中一個安裝的

scripts 所造出來的. Makefile 正常下會為你的系統而修正, 但你偶而可能需

要"旋扭(tweak)"或手動地修正錯誤.

 

你的一般安裝步驟將會是:

* 讀一下 README 檔案和其它合用的文件.

* 執行 xmkmf -a, 還是 INSTALL 或 configure script.

* 檢查一下 Makefile.

* 假如需要, 執行一下 make clean, make Makefiles, make includes, and

make depend.

* 執行 make.

* 檢查一下權限.

* 假如需要, 執行一下 make install.

 

4. 克服困難

假如用 xmkmf 和/或 make 很成功沒有錯誤, 你可以著手於 [4]next section.

然而, 在真實生活, 很少事情在第一次就正確的工作. 這就是當你的機智豐富

時,要勇於嘗試.

 

4.1 連結錯誤

* 假如 make 失敗而出現有 Link error: -lX11: No sUCh file or

directory, 甚至是在使用 xmkmf 後. 這可能意味著 Imake 檔案沒有適當地

裝好. 檢查 Makefile 的第一部分有沒有像這樣的幾行:

 

LIB= -L/usr/X11/lib


INCLUDE= -I/usr/X11/include/X11

LIBS= -lX11 -lc -lm

-L 和 -I 切換器(switches)會通告編譯器和連結器分別去哪□尋找

library 和 include 檔案. 在這例子, X11 libraries 應該是在

/usr/X11/lib 目錄, 而 X11 include 檔案 應該是在

/usr/X11/include/X11目錄. 假如這在你的機器上是不對的, 必須改變

Makefile 而且再試試 make.

 

* 在非常少的情況, 以 root 身分跑一下 ldconfig 也許是個答案: #

/etc/ldconfig -n /lib 將會更新共享式函式庫符號連結 (shared library

symbolic links). 這在正常的情形下不是需要的.

 

* 目前另一件事是假如 xmkmf 失敗, 則試試下列 script:

 

make -DUseInstalled -I/usr/X386/lib/X11/config

* 有時原始碼需要使用舊版的 X11R5 libraries 來建立. 假如你有 R5 libs

在 /usr/X11R6/lib (當你首先在安裝 Linux 時, 你是有選擇是否安裝它們

的), 然後你只需要確定,你有連結到軟體所需要建立的地方. R5 libs 是有

libX11.so.3.1.0, libXaw.so.3.1.0, 和 libXt.so.3.1.0. 一般你需要連結

至, 像是 libX11.so.3 -> libX11.so.3.1.0. 大概軟體也需要這個形式連結

libX11.so -> libX11.so.3.1.0. 當然, 要將這"斷掉(missing)"的連結建

好, 要以 root 身分使用這

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 铜陵市| 建瓯市| 遵义市| 汉阴县| 康平县| 驻马店市| 华容县| 陆良县| 赤峰市| 邓州市| 安泽县| 福州市| 西林县| 永泰县| 行唐县| 平安县| 抚顺县| 德保县| 武安市| 九江市| 竹北市| 洞口县| 阜康市| 松阳县| 荔浦县| 潞城市| 太和县| 石首市| 花垣县| 攀枝花市| 论坛| 富宁县| 长泰县| 东乡| 平塘县| 建瓯市| 莱州市| 茌平县| 永靖县| 托里县| 若羌县|