亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

在 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 身分使用這

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产午夜精品全部视频在线播放| 成人有码在线播放| 欧美视频中文字幕在线| 亚洲欧洲av一区二区| 91超碰中文字幕久久精品| 伊人伊成久久人综合网站| 欧美大全免费观看电视剧大泉洋| 91精品视频在线| 91精品视频免费| 国产精品国产三级国产aⅴ浪潮| 亚洲精品国偷自产在线99热| 亚洲free嫩bbb| 欧美性生交xxxxx久久久| 日本欧美一级片| 色综合91久久精品中文字幕| 欧美成人黑人xx视频免费观看| 亚洲a成v人在线观看| 九九久久久久久久久激情| 国产美女精品免费电影| 国产精品wwww| 成人免费大片黄在线播放| 狠狠躁夜夜躁人人躁婷婷91| 欧美激情亚洲激情| 国产欧美一区二区三区久久| 亚洲综合大片69999| 欧美日韩国产页| 欧美孕妇毛茸茸xxxx| 97在线精品视频| 亚洲国产毛片完整版| 成人性教育视频在线观看| 97**国产露脸精品国产| 欧美精品18videosex性欧美| 国产精品日韩在线一区| 日韩av影视综合网| 97精品国产91久久久久久| 国产一区二区在线免费视频| 91高清视频免费观看| 久99久在线视频| 国产亚洲欧美视频| 色妞在线综合亚洲欧美| 欧美日韩综合视频网址| 97香蕉超级碰碰久久免费软件| 欧美日韩在线观看视频小说| 日韩欧美视频一区二区三区| 欧美激情中文字幕乱码免费| 中文字幕亚洲无线码a| 日本伊人精品一区二区三区介绍| 亚洲综合自拍一区| 国内精久久久久久久久久人| 韩国一区二区电影| 91日本在线观看| 日韩免费av一区二区| 青青精品视频播放| 国产精品欧美日韩| 国产精品美女主播| 97在线视频精品| 亚洲精品久久在线| 欧美黑人巨大精品一区二区| 国产九九精品视频| 欧美另类精品xxxx孕妇| 国产精品久久久久久久久久久久久| 久久精品在线播放| 国产精品一久久香蕉国产线看观看| 国产精品中文在线| 久久久精品中文字幕| 日韩中文在线中文网三级| 亚洲第一精品自拍| 欧美猛交ⅹxxx乱大交视频| 国产精品国产福利国产秒拍| 91精品在线国产| 日韩精品中文字幕久久臀| 中文字幕在线观看日韩| 国产成人一区二区三区| 成人久久久久爱| 欧美一级淫片aaaaaaa视频| 精品久久久久久中文字幕大豆网| xxx成人少妇69| 在线观看视频亚洲| 日韩成人在线视频观看| 久久精品成人一区二区三区| 国产成一区二区| 亚洲va国产va天堂va久久| 97色伦亚洲国产| 欧美日韩亚洲视频一区| 亚洲最大的成人网| 欧美激情一级欧美精品| 国产一区二区色| 高清一区二区三区日本久| 日韩在线播放一区| 日韩成人中文字幕在线观看| 亚洲欧美中文日韩v在线观看| 亚洲高清一区二| 久久精品电影网| 91久久国产精品91久久性色| 久久资源免费视频| wwwwwwww亚洲| 日韩av电影在线播放| 国产99久久精品一区二区 夜夜躁日日躁| 欧美日韩在线一区| 在线看福利67194| 久久久久www| 国产亚洲精品美女| 久久成人这里只有精品| 中文字幕亚洲欧美日韩在线不卡| 久久久久久午夜| 91中文精品字幕在线视频| 欧洲美女免费图片一区| 欧美视频精品一区| 久久成人国产精品| 日韩在线视频观看正片免费网站| 欧美视频中文字幕在线| 久久久精品国产| 亚洲色图综合久久| 97人人做人人爱| 亚洲欧美一区二区三区在线| 欧美日本啪啪无遮挡网站| 亚洲精品成a人在线观看| 久久久久久久久久久网站| 欧美视频在线视频| 成人免费xxxxx在线观看| 欧美精品电影免费在线观看| 日本三级韩国三级久久| 日韩在线视频观看正片免费网站| 亚洲精品久久视频| 国产在线视频一区| 欧美日韩国产精品一区二区不卡中文| 日韩视频免费在线观看| 5566成人精品视频免费| 欧美日本中文字幕| 日韩国产精品一区| 中文字幕免费精品一区高清| 国产精品视频一区二区三区四| 97在线视频观看| 国产做受高潮69| 日韩视频第一页| 欧美黑人性生活视频| 亚洲人成毛片在线播放| 成人性生交大片免费观看嘿嘿视频| 国产精品99久久久久久久久久久久| 亚洲综合日韩中文字幕v在线| 久久久精品国产网站| 亚洲国产欧美自拍| 欧美亚洲国产另类| 亚洲国产精品人人爽夜夜爽| 国产不卡一区二区在线播放| 日韩激情第一页| 国产在线拍偷自揄拍精品| 亚洲人精选亚洲人成在线| 亚洲大胆人体在线| 国产欧美日韩精品专区| 亚洲欧美中文另类| 国产成人精品久久亚洲高清不卡| 欧美孕妇性xx| 国产精品影片在线观看| 久久精品成人一区二区三区| 亚洲欧美激情一区| 欧美激情图片区| 久久国产精品久久国产精品| 亚洲精品国产福利| 成人免费xxxxx在线观看| 91精品91久久久久久| 日韩电影视频免费| 色www亚洲国产张柏芝| 亚洲第一页中文字幕|