歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux基礎教程:從源碼安裝軟件

Linux基礎教程:從源碼安裝軟件

日期:2017/2/28 14:21:37   编辑:Linux教程

為什麼要從源碼安裝軟件

在什麼情況之下,我們需要從源代碼安裝軟件呢?我想不外乎這些情形:一種情況是軟件放出了新的版本,而所用的發行版並沒有及時跟進,這時候,想要嘗鮮的話,就非得靠自己不可;另一種情形是不管是軟件的開發者,還是現用的系統都沒有提供可直接使用的二進制包,而自己又非要使用該軟件,那麼也需親自出馬才行;當然,還有其他的情形。總而言之,學會從源代碼安裝軟件是一項非常重要的技能。

什麼是make 與 configure

make 是一支程序,當執行make 時,make 會在當前目錄下尋找 makefile 這個文本文件。 makefile 中定義了源碼是如何編譯的詳細信息,如何調用 gcc對源代碼進行編譯生成目標文件,如何鏈接生成可執行文件。

makefile 是如何生成的呢? 通常,軟件開發商都會提供一個檢測程序來檢測用戶的操作系統環境,該程序檢測完畢之後,就會主動的建立這個makefile 。

准備工作

那麼,要如何才能從源代碼安裝軟件呢?首先,你必須要做好為編譯源代碼所需的准備工作。這包括兩個方面:

  1. 編譯工具:要將源代碼編譯成可執行的二進制文件,編譯工具必不可少: gcc , g++ , make , autoconfig 等等。在CentOS系列中,可以通過 yum -y groupinstall "Development Tools" 來安裝。在 Ubuntu 中,可以從終端中執行 sudo apt-get install build-essential 指令來安裝基本的編譯工具。根據所編譯程序的實際情況,你也可能需要安裝其他一些工具。

  2. 編譯依賴:除了安裝基本的編譯工具之外,為了順利編譯源代碼,我們也要把該程序所需要的依賴安裝好。包含系統提供的庫函數, 以及第三方軟件的依賴包。在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(安裝文件)等,以便了解程序的編譯介紹。這一步超級重要!!!

當所有的事情都准備妥當了後,那麼讓我們來進行源代碼編譯的三部曲吧。

  1. 配置,建立makefile文件:這是編譯源代碼的第一步,通過 ./configure 命令完成。執行此步以便為編譯源代碼作准備。常用的選項有 --prefix=PREFIX,用以指定程序的安裝位置。更多的選項可通過 --help 查詢。也有某些程序無需執行此步。

  2. 編譯:一旦配置通過,可即刻使用 make 指令根據makefile的定義,調用 gcc 來執行源代碼的編譯過程。視軟件的具體情況而定,編譯所需的時間也各有差異,我們所要做的就是耐心等候和靜觀其變。此步雖然僅下簡單的指令,但有時候所遇到的問題卻十分復雜。較常碰到的情形是程序編譯到中途卻無法圓滿結束。此時,需要根據出錯提示分析以便找到應對之策。需要執行 make clean , 然後再重新執行 make 指令。

  3. 安裝:如果編譯沒有問題,那麼執行 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 命令。

相關閱讀:C++靜態庫與動態庫 http://www.linuxidc.com/Linux/2015-04/115811.htm

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2015-04/115812p2.htm

Copyright © Linux教程網 All Rights Reserved