linux源碼編譯安裝軟件原理


一.關於軟件包

​ 在linux中安裝軟件是需要安裝包的,軟件的安裝包有各種類型:.zip,.rar,.rpm,.tar.gz,.tar。軟件包還可以分為源代碼包和二進制

包,源代碼包是沒有經過編譯的包,需要經過GCC、C++編譯器環境編譯才能運行。二進制包無需編譯,可以直接安裝使用。區分是否為

源代碼包還是二進制包還得基於軟件包里面的文件來判斷,包含.h、.c、.cpp、.cc等結尾的源碼文件,稱之為源代碼包,而軟件包里面存

在bin目錄(bin目錄里有可執行文件),稱之為二進制包。源碼包高度可定制,可以自由選擇自己需要的功能。

二.軟件編譯過程

1.將源碼編譯成可供Linux運行的二進制文件一共需要兩步:

  • ​ 使用gcc編譯器將源碼編譯成目標文件
  • ​ 再次使用gcc編譯器將目標文件鏈接成二進制文件

這過程看似簡單,實則不然。一個軟件的源代碼往往被封裝在多個源文件中,此外這些文件有錯綜復雜的依賴關系,編譯需要嚴格按照指

定的順序進行,這無疑增加了編譯的難度。好在make命令可以幫助我們簡化編譯過程。整個編譯過程被濃縮在Makefile文件中(告訴

make命令需要怎么去編譯和鏈接程序),當執行make命令時,make會去當前目錄中尋找Makefile文件,並根據該文件中的要求完成整個

編譯過程。而Makefile文件由configure命令產生。當執行configure命令時,configure會根據當前系統環境動態生成一個適合本系統的

Makefile文件,供make命令使用。

2.Linux源碼安裝步驟

  • ​ 獲取源碼並解壓
  • ​ 查看INSTALL與README文件:解壓后查看INSTALL與README文件,這兩個文件中詳細介紹了軟件的安裝方法和注意事項
  • ​ 創建Makefile文件:執行configure命令,生成Makefile文件
  • ​ 編譯:執行make clean;make命令將源碼編譯成二進制文件。PS:make clean命令用來清除上一次編譯生成的目標文件,這個步驟可有可無,但為了確保編譯的成功,還是加上為好,防止由於軟件中含有殘留的目標文件導致編譯失敗
  • ​ 安裝:執行make install命令將上一步編譯好的二進制文件安裝到指定的目錄中去

三.編譯安裝常用參數

# ./configure
a. 指定安裝路徑,例如 --prefix=/usr/local/nginx
b. 啟用或禁用某項功能, 例如 --enable-ssl, --disable-filter --with-http_ssl_module
c. 和其它軟件關聯,例如--with-pcre
d. 檢查安裝環境(檢查依賴到的外部環境),例如是否有編譯器gcc,是否滿足軟件的依賴需求
最終生成:Makefile

# make  -j 4    #按Makefile文件編譯,可以使用-j 4指定4核心CPU編譯,提升速度
# make install  #按Makefile定義的文件路徑安裝
# make clean 	#清除上次的make命令所產生的object和Makefile文件。使用場景:當需要重新執行configure時,需要執行make clean
#make  uninstall   #刪除安裝包,有時刪除不干凈,所以建議大家安裝時,在configure步驟添加一個: --prefix  參數。這樣刪除或備份時,直接對刪除--prefix指定的安裝目錄操作就可以了。

四.源碼編譯出錯的解決思路

1.首先編譯軟件需要各種編譯器,各種依賴包,編譯之前先安裝軟件的依賴包能減少出錯。注意查看INSTALL與README文件,這兩個文

件詳細介紹了軟件的安裝方法和注意事項;

2.根據./configure的報錯信息來解決問題,缺少依賴包就安裝依賴包。如果知道缺少依賴軟件名,但是不知道依賴包,可以使用yum

search 軟件名,查看屬於哪個依賴包,然后安裝;

3.可以使用http://www.rpmseek.com/index.html查找需要的軟件。

五.各種軟件安裝方法的特點

  • ​ 使用yum 或者rpm直接安裝軟件:操作方便,軟件版本低(穩定版),穩定性好,管理方便,性能稍差;
  • ​ 源碼編譯安裝軟件:操作麻煩,軟件版本新,可以定制,穩定性稍差,管理稍差,性能好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM