程序包編譯
程序包編譯安裝:
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
開源程序源代碼的獲取:
官方自建站點:
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 Toolss
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,發現可以登陸
在電腦上面的瀏覽器測試一下,也沒有問題,到此處實驗已完畢。