1. 程式人生 > >Linux 編譯安裝原始碼包

Linux 編譯安裝原始碼包

程式包編譯安裝     *.src.rpm→安裝後,使用rpmbuild命令製作成二進位制格式的rpm  包,而後再安裝;     原始碼組織格式:         多檔案:檔案中的程式碼段之間,很有可能存在跨檔案依賴關係;     各個語言的專案管理器:         C,C++:make;         Java:maven;     make執行過程:         make針對每一個原始碼都有一個專用的配置檔案,它會根據配置檔案作出決定,比如在預處理階段,決定呼叫那個前處理器如何預處理;在編譯階段決定呼叫哪個編譯器如何執行編譯,先編譯哪個檔案,後編譯哪個檔案;最後編譯生成的檔案要放到那些目錄等;             這個配置檔案就是makefile,因為不同使用者的需求不同,所以決定了makefile不可能是事先存在的,需要根據需求而臨時生成的,那麼它是怎麼生成的那:由Makefile.in生成;makefile.in就類似一個模板,使用者選擇好不同的引數之後根據模板而生成makefile,比如事先設定各種配置檔案的安裝路徑等;那麼問題來了:Makefile.in這個模板是怎麼生成的那,它是由configure這個指令碼生成的;configure指令碼允許使用者傳遞給它一些選項用來指明程式包的編譯引數、啟用特性、安裝路徑等;                 大體過程:configure通過使用者指定的選項然後結合Makefile.in模板來生成makefile檔案;     編譯安裝三步驟:         ./configure             通過選項傳遞引數,指定啟用特性,安裝路徑;執行時會參考使用者指定的引數以及Makefile.in模板生成makefile檔案;             檢各個啟用的功能所依賴的外部環境;         make             根據makefile檔案,構建應用程式;         make install:其實這一步就是把編譯(構建)好的程式的檔案放到相對應的目錄下,使用cp命令也可以完成;     開發工具:         一般情況下原始碼包都會自帶configure,但是也有的原始碼包不帶,所以就需要我們自己生成它,如果手動的一步一步的編寫這個就指令碼無疑是很費時間的,所以就有了可以自動生成它的開發工具;         autoconf:生成configure指令碼;         automake:生成Makefile.in檔案;             因不同的需求而啟動的功能有所不同,所以導致configure也是不同的,所以autoconf也是需要根據配置檔案來生成configure指令碼的;Makefile.in同理;     建議:安裝前檢視INSTALL、README說明文字;     開原始碼獲取途徑:         官方自建站點             apache.org(ASF)             mariadb.org             …         程式碼託管             SourceForge             Github.com             code.google.com     編譯C原始碼         前提:提供開發工具和開發環境;         開發工具:gcc,make;         開發環境:開發庫,標頭檔案;         通過“包組”提供開發工具;             Centos 6 常用開發庫:“Development Tools”,“Server Platform Development”;             Centos7  常用開發庫:“Development Tools”;                  第一步  ./configure             選項:指定安裝位置,指定啟用的特性;             --help:檢視幫助;                 --prefix=/PATH/TO/SOMEWHERE:指定預設安裝目錄;預設安裝到/usr/local/                 --sysconfdir=/PATH/TO/SOMEWHERE:指明配置檔案安裝的路徑;                 System Types:指明目標系統平臺,可以實現交叉編譯;                     不同軟體的原始碼包實現功能不同,所以選項也各有不同,根據情況隨機應變;                 Optional Features:可選特性;                     可以啟用或關閉特性,選項略;                 Optional Packages:定義依賴到的程式包,跟依賴關係相關;         第二步  make         第三步  make install     安裝後的配置:         匯出二進位制程式目錄至環境變數PATH中             編輯檔案:/etc/prefile.d/NAME.sh                 新增export PATH=/PATH/TO/BIN:$PATH         匯出庫檔案路徑             編輯/etc/ld.so.conf.d/NAME.conf                 新增新的庫檔案所在目錄至此檔案中;             再讓系統重新生成快取:                 ldconfig -[v]         匯出標頭檔案             基於符號連結的方式實現;             ln -s         匯出man手冊             編輯/etc/man_db.conf檔案;                          注:根據馬哥視訊做的學習筆記,如有錯誤,歡迎指正:侵刪