CentOS程序包管理(3)
應用程序的編譯安裝(C/C++)
爲什麼要進行應用程序源代碼的編譯安裝?
1.對應應用程序的程序包不能直接獲取到;
2.在已經編譯好的二進制格式的程序的功能不包含我們所需要的;
3.在已經編譯好的二進制格式的程序中,包含太多的我們所不需要的功能;
軟件項目管理工具:
C/C++:make
Makefile
應用程序源代碼的分類:
1.由程序員直接打包的源代碼
name-VERSION.tar.gz
2.由第三方利用rpm工具製作的rpm源代碼包:
name-VERSION-release.src.rpm
源代碼的組織形式:
1.一個應用程序包含多個文件;
2.某個文件中的不同的代碼段之間,甚至不同文件的代碼段之間都可能存在依賴關係;
應用程序源代碼的編譯過程:
源代碼 --> 預處理(預處理器,CPP) --> 編譯(編譯器,CC[gcc]) --> 彙編(彙編器) --> 鏈接(鏈接器) --> 用於執行操作的二進制程序文件
Makefile文件的功能:
1.包含了各個程序源代碼文件之間的關係;
2.決定文件的編譯順序;
3.使用哪個預處理器進程何種預處理操作;
4.使用哪個編譯器進程何種編譯操作;
...
程序員通過使用專用工具,對於所有的源代碼文件進行內容的分析和提取,並構建出一個同一的makefile文件的絕對模板,即:Makefile.in
有了這個模板,用戶可以根據自己的需求,自行構建Makefile文件,從而可以實現個性化的編譯過程;幫助用戶生成Makefile文件的是一個名爲"configure"的腳本;
開發工具:
autoconf:幫助用戶生成configure腳本文件;
automake:幫助用戶生成Makefile.in的模板文件;
建議:在獲取任何源代碼包並解壓縮之後,要去讀取其中隨程序源代碼提供的"INSTALL"或"README"類的文檔文件,以獲知該應用程序源代碼的編譯步驟;
開源應用程序的源代碼的獲取方式:
1.官方自建的資源站點:
apache.org(ASF)
MariaDB --> mariadb.org
varnish-cache.org
...
2.代碼託管站點:
SourceForge
Github
code.google.com
Linux中進行C/C++源代碼編譯時使用的編譯器:gcc,GNU C Compiler
在使用NAT模式聯網進行軟件包的安裝的時候如果出現/var/run/yum.pid 已被鎖定,PID 爲 4040 的另一個程序正在運行等相同問題,則~]# rm -f /var/run/yum.pid
在執行安裝命令~]# yum install gcc
編譯源代碼所需的開發環境:(程序包組)
CentOS 7:
Development Tools
Compatibility Libraries
CentOS 6:
Development Tools
Server Platform Development
注意:程序包組中所包含的開發環境並不是非常完整,如果某個應用程序在編譯時有其他環境要求的話,需要安裝對應應用程序的開發工具包;
如果有rpm格式的開發工具包,其名稱爲name-devel-VERSION-release.rpm,則可以使用yum直接安裝;
如果沒有對應的rpm格式的開發工具包,則需要優先編譯安裝開發工具;
編譯源代碼安裝應用程序的三大步驟:
1.利用configure腳本生成Makefile文件;
~]# ./configure [option]...
--help
--prefix:選擇程序安裝的路徑;
--enable-function:
--with-function:
2.使用項目管理工具"make"進行編譯;
注意:有一些應用程序在實施編譯操作之前需要測試(make test)
3.使用"make install"命令進行編譯後的二進制文件的最後的安裝;
編譯安裝完成以後的收尾工作:
1.導出二進制文件的路徑;
2.導出庫文件路徑;
3.導出頭文件路徑(可選);
4.導出幫助文件路徑;
嘗試編譯安裝httpd:(這些安裝包首先要事先存在於你的系統內存當中,如果沒有可以到相關網站進行下載)
1.安裝apr
~]# tar xf apr-1.5.2-tar.bz2
~]# cd apr-1.5.2
~]# ./configure --prefix=/usr/local/apr-1.5.2
~]# make [-j 4]
~]# make install
2.安裝apr-util
~]# tar xf apr-util-1.5.4-tar.bz2
~]# cd apr-util-1.5.4
~]# ./configure --prefix=/usr/local/apr-util-1.5.4 --with-apr=/usr/local/apr-1.5.2
~]# make [-j 4]
~]# make install
3.安裝httpd
~]# tar xf httpd-2.4.29-tar.bz2
~]# cd httpd-2.4.29
~]# ./configure --prefix=/usr/local/apache-2.4.29 --with-apr=/usr/local/apr-1.5.4 --with-apr-util=/usr/local/apr-util-1.5.4 --with-pcre
~]# make [-j 4]
~]# make install
注:因爲需要pcre的支持,所以需要事先安裝pcre-devel包;
收尾工作:
1.導出二進制文件:
創建一個文件:/etc/profile.d/httpd.sh
export PATH=/usr/local/apache-2.4.29/bin:$PATH
2.導出庫文件:
創建一個文件:/etc/ld.so.conf.d/httpd.conf
/usr/local/apache-2.4.29/lib64
3.導出頭文件;
創建符號鏈接:
~]# ln -sv /usr/local/apache-2.4.29/include /usr/include/httpd
4.導出幫助文檔:
對於CentOS7來說,在導出二進制文件時已經自動導出了幫助文檔;如果沒有成功導出,則需要在/etc/man_db.conf文件中添加一行:
MANPATH_MAP=/usr/local/apache-2.4.29/bin /usr/local/apache-2.4.29/man
對於CentOS6來說,需要手動導出:
在/etc/man.config中添加一行:
MANPATH=/usr/local/apache-2.4.29/man