標籤:linux軟體包的安裝之----源碼編譯安裝
前提:必須裝好前面說過的開發環境,rhel6上的3個開發包組
Rhel5/centos5上面安裝:
1)Development Tools (2)Server Platform Development (3)Develogmentlibraries
Rhel6/centos6上面安裝:
1) Development Tools (2)Server Platform Development (3)Desktop PlatformDevelopment
**由於tarball中的c程式源碼檔案之間有依賴關係,因此我們不便於用gcc手工編譯,因為我們編譯必須按照特定的順序進行,否則安裝就會失敗。
**make命令:通過一個設定檔(專用於make的,源碼目錄下的Makefile,一般由configure指令碼產生)來調用gcc等編譯指令來完成一個軟體工程/軟體項目的編譯。
Makefile檔案:指定了要使用gcc先編譯哪個檔案[中的哪個片段],編譯完成此檔案後再編譯哪個檔案,編譯過程中使用什麼參數進行最佳化。
configure指令碼:用於產生Makefile檔案,此指令碼可以結合約一目錄下的Makefile.in檔案來產生Makefile ,configure指令碼一般由開發人員通過automake命令產生。
編譯安裝的一般步驟:
#cd Source_code/
#./configure
運行目的:(1)檢查系統編譯環境,所需的編譯器、標頭檔、庫檔案等是否完備。
(2)接受使用者指定編譯配置選項,其中較常用的選項如下:
--help 擷取協助列表
--prefix 指定程式安裝的目錄 ----(例httpd程式)程式的二進位檔案都在此目錄下的bin、sbin、libexec(此目錄下檔案只能由其他程式調用執行)目錄。
--sysconfdir 指定程式設定檔的安裝目錄
--mandir 指定程式協助檔案的安裝目錄
這一步的執行過程記錄在目前的目錄下的config.log中,並且已經產生Makefile檔案,若這一步執行沒有任何錯誤,則進行下一步。
#make
開始根據Makefile檔案編譯原始碼,可以指定使用的編譯器(如icc,gcc)
若這一步執行沒有任何錯誤,則進行下一步。
#make install
就是將你編譯好的檔案放到你指定的目錄中去
安裝後二進位檔案位置為:/--prefix指定的目錄/bin
/--prefix指定的目錄/sbin
/--prefix指定的目錄/libexec(此目錄下檔案只能由其他程式調用執行)
安裝後庫檔案位置為:/--prefix指定的目錄/lib
安裝後設定檔位置為:/--prefix指定的目錄/conf
安裝後協助檔案位置為:/--prefix指定的目錄/[share]/man
安裝後標頭檔位置為:/--prefix指定的目錄/include
***安裝後要修改的各個搜尋路徑如下
1) 修改命令搜尋路徑的值:PATH,將二進位檔案的目錄包含進去。
例:vi /etc/profile.d/apache.sh 輸入
export PATH=/usr/local/apache/bin:$PATH
:x #source /etc/profile.d/apache.sh
#hash –d(清空hash緩衝)
#apachectl start#hash(查看命令調用路徑)
2) 修改庫檔案搜尋路徑的值:(每一個程式的運行都要依賴於庫檔案的,尤其是apache的開發庫以及程式運行依賴的庫都在/--prefix指定的目錄/lib下,我們可以通過ldd命令查看二進位程式所依賴的庫檔案名稱及其所在的路徑,這些庫檔案找不到的話二進位程式就無法正常運行(會報錯!))
***庫檔案的搜尋路徑的修改在設定檔/etc/ld.so.conf或/etc/ld.so.conf/*.conf檔案(/etc/ld.so.conf檔案會包含這些檔案,可以自己建立一個檔案,以.conf為尾碼,把新增的庫檔案路徑寫進去即可)中。
***ldconfig命令讓系統根據設定檔/etc/ld.so.conf或/etc/ld.so.conf/*.conf檔案重新搜尋當前系統上的每一個庫檔案,並產生快取檔案/etc/ld.so.cache,系統通過這個快取檔案來尋找庫檔案,因此我們每新加一個庫檔案路徑就必須讓這個快取檔案重建。
執行個體:#vi /etc/ld.so.conf.d/apache.conf 輸入
/usr/local/apache/lib
:x儲存退出
#ldconfig -v(讓快取檔案/etc/ld.so.cache重建,並顯示產生緩衝的過程,哪個目錄下有哪些庫檔案!)
#ldconfig -v|grep /usr/local/apache/
#ldconfig -v|less
3)匯出man檔案(設定檔不需要被匯出):匯出/--prefix指定的目錄/下的man目錄,即man1,man8目錄的父目錄,協助檔案搜尋路徑在設定檔:/etc/man.config中,加一行MANPATH ”……程式協助檔案所在路徑……….”即可
例:#vi /etc/man.config 找到MANPATH關鍵字,加一行
MANPATH /usr/local/apache/man :x儲存退出
#man httpd
***如果不確定是否為對應版本程式的apache協助檔案,可以用命令指定協助檔案的搜尋路徑
#man -M /usr/local/apache/man httpd
執行個體
#ln -sv /usr/local/apache/include /usr/include/httpd
也可以單獨連結但是不便於管理!# ln -sv /usr/local/apache/include/* /usr/include/
#ldd /usr/local/apache/bin/httpd(若程式轉移至其他系統上,缺少依賴的庫檔案是無法啟動並執行)
*****至此源碼安裝完成!!!
執行個體:linux下支援多線程、斷點續傳的下載工具axel
#查看readme
#./configure --help
#./configure –prefix=/usr/local/axel
#make && make install
#man –M / usr/local/axel/share/man axel
#/ usr/local/axel/ -n 5(開5個下載線程) -o /root(下載到/root目錄) ftp://......./....iso
支援斷點續傳,終止它重新下載試試!
本文出自 “就讓我更餓一點” 部落格,請務必保留此出處http://ufirst.blog.51cto.com/7628670/1432603