標籤:文字檔 執行檔案 詳細資料 原始碼 開發商
為什麼要從源碼安裝軟體
在什麼情況之下,我們需要從原始碼安裝軟體呢?我想不外乎這些情形:一種情況是軟體放出了新的版本,而所用的發行版並沒有及時跟進,這時候,想要嘗鮮的話,就非得靠自己不可;另一種情形是不管是軟體的開發人員,還是現用的系統都沒有提供可直接使用的二進位包,而自己又非要使用該軟體,那麼也需親自出馬才行;當然,還有其他的情形。總而言之,學會從原始碼安裝軟體是一項非常重要的技能。
什麼是make 與 configure
make 是一支程式,當執行make 時,make 會在目前的目錄下尋找 makefile 這個文字檔。 makefile 中定義了源碼是如何編譯的詳細資料,如何調用 gcc對原始碼進行編譯產生目標檔案,如何連結產生可執行檔。
makefile 是如何產生的呢? 通常,軟體開發商都會提供一個檢測程式來檢測使用者的作業系統環境,該程式檢測完畢之後,就會主動的建立這個makefile 。
準備工作
那麼,要如何才能從原始碼安裝軟體呢?首先,你必須要做好為編譯原始碼所需的準備工作。這包括兩個方面:
編譯工具:要將原始碼編譯成可執行檔二進位檔案,編譯工具必不可少: gcc , g++ , make , autoconfig 等等。在CentOS系列中,可以通過 yum -y groupinstall "Development Tools" 來安裝。在 Ubuntu 中,可以從終端中執行 sudo apt-get install build-essential 指令來安裝基本的編譯工具。根據所編譯器的實際情況,你也可能需要安裝其他一些工具。
編譯依賴:除了安裝基本的編譯工具之外,為了順利編譯原始碼,我們也要把該程式所需要的依賴安裝好。包含系統提供的庫函數, 以及第三方軟體的依賴包。在CentOS系列中,可以通過 yum -y install xxxx xxxx-devel 來安裝相應的依賴包。Ubuntu 系統可以通過 sudo apt-get build-dep 命令後跟包名的方式來準備所需的依賴。一般情況下,如果 configure 或者 make 報錯,其報錯資訊都明確的指出缺少依賴,只需按要求做即可。或者把錯誤資訊複製到 google 一下,即可愉快的解決。
源碼安裝3部曲: ./configure ; make && make install
在編譯原始碼之前,你一定把軟體的源碼包下載到了自己的硬碟上吧。一般而言,程式源碼包經常被打包成 .tar.gz 和 .tar.bz2 這兩種格式。前者可用 tar zxvf *.tar.gz 來解包,後者則用 tar jxvf *.tar.bz2。通常情況建議解壓到 /usr/local/src 目錄: # tar xf *.tar.gz -C /usr/local/src
通常,在解包後,我們應該閱讀程式附帶的相關說明檔案,如 README(讀我檔案)、INSTALL(安裝檔案)等,以便瞭解程式的編譯介紹。這一步超級重要!!!
當所有的事情都準備妥當了後,那麼讓我們來進行原始碼編譯的三部曲吧。
配置,建立makefile檔案:這是編譯原始碼的第一步,通過 ./configure 命令完成。執行此步以便為編譯原始碼作準備。常用的選項有 --prefix=PREFIX,用以指定程式的安裝位置。更多的選項可通過 --help 查詢。也有某些程式無需執行此步。
編譯:一旦配置通過,可即刻使用 make 指令根據makefile的定義,調用 gcc 來執行原始碼的編譯過程。視軟體的具體情況而定,編譯所需的時間也各有差異,我們所要做的就是耐心等候和靜觀其變。此步雖然僅下簡單的指令,但有時候所遇到的問題卻十分複雜。較常碰到的情形是程式編譯到中途卻無法圓滿結束。此時,需要根據出錯提示分析以便找到應對之策。需要執行 make clean , 然後再重新執行 make 指令。
安裝:如果編譯沒有問題,那麼執行 make install 就可以將程式安裝到系統中了。
需要注意的是:上面的步驟必須一步一步的進行,只要其中的一個步驟無法成功,那麼後續就完全沒有辦法再進行。
管理:目錄規劃,卸載,升級
源碼通常解壓到 /usr/local/src 目錄
安裝時最好安裝在 /usr/local 目錄
將 軟體的 man page 加入 man path 中, 編輯 /etc/man.config ,增加 MANPATH 項。
把軟體的 bin 目錄加入到 PATH 環境變數, 編輯 /etc/profile.d/xxxx.sh, 增加 export PATH=$PATH:/usr/local/xxx/bin
若是覺得所編譯的軟體不夠適用想要刪除,又如何做呢?我們只需轉到編譯原始碼的目錄,執行 sudo make uninstall 命令。
本文出自 “Share your knowledge” 部落格,請務必保留此出處http://skypegnu1.blog.51cto.com/8991766/1626265
Linux基礎:從源碼安裝軟體