程序包編譯安裝
*.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文件;
注:根據馬哥視頻做的學習筆記,如有錯誤,歡迎指正:侵刪