程序包編譯
程序包編譯安裝:
Application-VERSION-release.src.rpm–>
安裝后,使用rpmbuild命令制作成二進制格式的rpm包,而后再安裝
源代碼–>預處理–>編譯(gcc)–>匯編–>鏈接–>執行
源代碼組織格式:
多文件:文件中的代碼之間,很可能存在跨文件依賴關系
C、C++:make (項目管理器,configure –>Makefile.in –> makefile)
java: maven
編譯安裝
C代碼編譯安裝三步驟:
1、./configure:
(1) 通過選項傳遞參數,指定啟用特性、安裝路徑等;執行時會參考用戶的指定以及makefile.in文件生成makefile
(2) 檢查依賴到的外部環境
2、make:根據makefile文件,構建應用程序
3、make install:復制文件到相應路徑
開發工具:
autoconf: 生成configure腳本
automake:生成Makefile.in
注意:安裝前查看INSTALL,README
開源程序源代碼的獲?。?/p>
官方自建站點:
apache.org (ASF)
mariadb.org
…
代碼托管:
SourceForge.net
Github.com
code.google.com
c/c++編譯器: gcc(GNU C Complier)
編譯C源代碼:
前提:提供開發工具及開發環境
開發工具:make, gcc等
開發環境:開發庫,頭文件
glibc:標準庫
通過“包組”提供開發組件
CentOS 7: "Development Tools",
"Server Platform Development",
第一步:運行configure腳本
選項:指定安裝位置、指定啟用的特性
–help: 獲取其支持使用的選項
選項分類:
安裝路徑設定:
–prefix=/PATH: 指定默認安裝位置,默認為/usr/local/
–sysconfdir=/PATH:配置文件安裝位置
System types:支持交叉編譯
Optional Features: 可選特性
–disable-FEATURE
–enable-FEATURE[=ARG]
Optional Packages: 可選包,
–with-PACKAGE[=ARG],依賴包
–without-PACKAGE,禁用依賴關系
第二步:make
第三步:make install
安裝后的配置:
(1) 二進制程序目錄導入至PATH環境變量中;
編輯文件/etc/profile.d/NAME.sh
export PATH=/PATH/TO/BIN:$PATH
(2) 導入庫文件路徑
編輯/etc/ld.so.conf.d/NAME.conf
添加新的庫文件所在目錄至此文件中;
讓系統重新生成緩存:
ldconfig[-v]
(3) 導入頭文件
基于鏈接的方式實現:
ln -sv
(4) 導入幫助手冊
編輯/etc/man.config|man_db.conf文件
添加一個MANPATH
示例:源碼安裝apache
安裝apache,需要先安裝包組的Development Tools
grouplist命令可以查看到已經安裝的包組
接下來,需要下載apache相應的文件,我們首先安裝lftp命令,默認沒有安裝
apache的壓縮包可以到apache.org官網下載,此處我們利用教室的資源,查找能安裝的包
找到這次實驗用的httpd-2.2.29的包,并且用get命令下載到系統當前目錄
查看該包的路徑,然后解壓縮
默認也是解壓到當前路徑
cd進去httpd的目錄里面,首先我們先要看一下安裝說明,這是必須要看的,不然出現其他自己也不清楚的狀況就不好了
查看安裝說明,確認一些基本的信息
再看看說明文件
在說明文件里面,會大概介紹這個包大概有什么用之類
看完說明文件以后,先不著急安裝,先看看configure腳本的一些細節說明
例如這里就介紹了軟件的默認安裝目錄,如果不查看的話,可能我們都不知道文件放哪里呢
看看其他關鍵文件,例如程序二進制文件和庫文件等等,這里還有提示我們添加環境變量,等下安裝完成這些都需要設置的
查看系統安裝關鍵的目錄,以及目錄的說明,安裝的時候,這些目錄的位置我們也換成自定義目錄位置
還有其他許多功能開關,如果需要用的話需要好好看看這些功能的作用
開始運行腳本進行安裝的第一步了,首先是配置好一系列安裝文件
腳本運行完會多了一堆的配置文件
運行make,開始編譯
我們可以查看/usr/local目錄下面發現沒有http2文件。是因為還沒有開始安裝
運行make install,安裝編譯完的文件
此時我們進去安裝目錄里面,看一下安裝好的文件,因為第一次安裝,不知道怎么使用的話,這個時候當然是查詢幫助手冊,但是我們發現沒有幫助手冊,不要慌,是因為系統沒有查詢幫助文件的路徑
CentOS 7下面編輯/etc/man_db.conf的文件。在下圖的位置加上安裝好后的apache的幫助文件路徑
如果是CentOS 6的話,幫助文件的路徑會在/etc/man.config里面
此時已經可以查看apachectl的手冊了
為了方便我們直接運行apache的命令,我們把apache包的bin目錄導入$PATH里面
在/etc/profile.d/下面創建http2.sh的腳本,然后運行該腳本,并且查看$PATH變量此時是否正確。腳本的信息如下圖所示。
此時我們把apache的庫文件的路徑配置也寫入到/etc/ld.so.conf.d/目錄下面,創建一個http2.conf的腳本,內容是apache的lib的路徑,如下圖所示。
庫文件的配置文件寫好以后,運行ldconfig -v的命令,把庫文件加載到內存里面
接下來把創建頭文件的軟鏈接目錄到系統的/usr/include/目錄下面
為了配置測試,此處創建一個簡單的index.html文件到apache目錄下面
以上都準備,我們可以開始運行apache服務器了,會發現有兩行報錯,這兩個報錯在此環境中是沒有問題的,因為當前環境還沒有配置web服務器的dns和ip等信息
啟動完apacche服務以后,我們用另外一臺服務器鏈接測試看看
此處正常情況下應該是正常運行,如果有發現報錯的話,排錯看看是哪里出了問題
此時查看一下apache的端口,發現端口號80是開著的,應該httpd服務已經開啟了
測試一下10.1.156.72的連通性,發現可以ping通,然后運行telnet 10.1.156.72到apache的服務器,發現鏈接不到,可能是防火墻的問題了。
登陸到apache的服務器上面,把iptables里面的信息都清空掉
重新在156.68的機器上面運行links 10.1.156.72,發現可以登陸
在電腦上面的瀏覽器測試一下,也沒有問題,到此處實驗已完畢。
原創文章,作者:~微風~,如若轉載,請注明出處:http://www.www58058.com/39677
文章對編譯安裝的知識總結的很全面,同時也通過示例演示編譯httpd加深了自己對編譯安裝的理解。但是編譯安裝后的配置未能進行詳細的演示,這里如果詳細點,這便是一篇上等佳作,值得置頂推薦