使用包管理方式安裝軟體與編譯源代碼的差別,包管理方式提供的(以rpm為例)軟體大多隻保留了一部分常用功能,如果我們需要使用軟體其它功能而rpm包沒有,這咱情況下就需要編譯源代碼了。編譯源代碼的方式安裝的軟體,可以自由選擇安裝那些功能,而rpm是固定好的。源代碼安裝選擇功能的靈活性好,rpm包安裝則比較簡便。而且大多數情況下,軟體以源代碼方式發行比rpm包要快。
源代碼的擷取方式,
編譯源代碼安裝軟體依賴開發環境,編譯c程式需要gcc編譯器,編譯c++需要gcc-c++編譯器,如果沒有,需要安裝。使用yum或rpm安裝。
make 工具,為了維護源代碼友善,一個代碼稍多的軟體可能分為多個檔案,而編譯時他們之間有互相依賴的關系,編譯時必須有先後順序。程式開發者會用項目管理工具(make),用這個工具為make提供一個配置檔案,這個配置檔案中描述了make如何調用gcc和這些檔案的先後編譯順序。
configure 腳本檔案,此文腳本件用會檢查編譯環境,人為設定需要啟動軟體那些功能,安裝在那個目錄等。
configure 支援的選項,每個軟體略有不同。常用的有
--help 擷取幫助
--prefix=/PATH 指定軟體安裝路徑。
--sysconfdir=/PATH 指定安裝軟體的配置檔案所在目錄
--enable-特性名稱 啟用某個特性或選項,啟用某個特性可能依賴額外開發環境。
--disable-特性名稱 禁用某個特性
--with-FUNCTION 或 --with=/lib/filename 指定依賴的功能或特定路徑下的檔案。
--without-FUNCTION
編譯安裝源代碼的順序,
解壓下載下傳的軟體包-->cd到解壓後的目錄-->./configure設定編譯選項-->make(編譯程式)-->make install(把編輯好的程式放到指定目錄)
示例:編譯安裝nginx軟體過程
# ./configure --prefix=/usr/nginx --conf-path=/etc/nginx/nginx.conf
報錯

./configure --prefix=/usr/nginx --conf-path=/etc/nginx/nginx.conf --without-http_rewrite_module
确認沒有報錯
#make
#make install
檢視配置檔案的目錄
檢視nginx安裝目錄
啟動nginx服務
#/usr/nginx/sbin/nginx &
#ss -tnlp
為了讓nginx像rpm安裝的程式一樣,需要做以下操作
定義PATH環境變量,在/etc/profile.d/建一個檔案名為nginx.sh。内容是export PATH= $PATH:/usr/nginx/sbin
添加man手冊,給/etc/man.conf檔案中添加
MAN /手冊所在的位置
如果其它其它程式依賴此程式的開發環境,則需要把此程式的庫和頭檔案導出
編輯/etc/ld.so.conf.d/nginx.conf,在此檔案中添加庫檔案路徑,一行一個庫檔案路徑。然後執行ldconfig觸發新成生庫檔案在所在位置,導出頭檔案隻能建立連結,把此軟體所在庫的目錄連結到/usr/include/下。