基于c語言的源代碼編譯安裝,通常有三個步驟
./configure
(1)通過選項傳遞參數,指定啟用特性,安裝路徑等:執行時會參考用戶的指定以及makefile.in文件生成makefile.
(2)檢查依賴到的外部環境;
make:根據makefile文件,構建應用程序:(make是真正構建項目成為二進制程序的一個關鍵步驟,但make自己不是編譯器,他是調用gcc來完成編譯的,所以說make只是一個項目管理工具,而這個項目管理工具依賴與makfile,l來完成項目構建,而makefile又不能寫死,所以這個時候依賴與configure腳本結合程序員事先寫好的模版Makefile.in,讓用戶自己指定選項以后執行生成
makeinstall(makeinstall其實就是把編譯好的文件復制到configure指定的安裝路徑下去)
configure,和makefile.in是由項目構建工具生成的,但是有些應用程序的編譯安裝不會自帶,所以得手動生成,而這依賴于以下兩個開發工具; 開發工具:
autoconf:生成configure腳本
automake:生成makefile.in
對與不同的應用程序,他的configure腳本肯定是不一樣的,因為對不同的應用程序他的參數和特性不一樣。所有autoconf需要結合一個配置文件去生成一個configure腳本,這個配置文件是用來告訴autoconf當前的這個開發的代碼他需要有那些功能,是用來做特性使用的。automake也是如此,這就意味著不同程序的安裝步驟是不一樣的,有些程序需要configure腳本,有些程序不需要。所有建議安裝源代碼程序時注意查他的install文檔,建議:安裝前查看install文檔,readme文檔
準備工作
開源程序源代碼的獲取:
官方自建站點:
apache.org(ASF)
mariadb.org
代碼托管:
sourceforge
github.com
code.google.com
提供開發工具及開發環境(chentos 5 6 7 通過“包組”提供開發組件,本次安裝是在centos6操作系統下完成的)
centos 6 的標準開發組件有兩個"Development toos","server platfrom development"
開發工具:make ,gcc等等
開發環境:開發庫,頭文件
安裝"Development toos","server platfrom development"
]#yum groupinstall "Development toos" "server platfrom development"
第一步:./configure腳本
選項:指定安裝位置,指定啟用特性
–help:獲取其支持使用的選項
選項分類:
安裝路徑設定:
–prefix=path/to/somewhere:指定默認安裝位置;默認為/usr/local
–sysconfidir=/path/to/somewhere:配置文件安裝位置
optional features:可選特性
–disable-feature
–enable-feature[=arg]
optional packages:可選包
–with-package[=arg]
–whithout-package
下載并解壓httpd-2.2.29.tar
]#tar xvf httpd-2.2.29.tar.bz2
cd至httpd2.2.29目錄
安裝前查看INSTALL,README文檔
INSTALL,README文件是該程序的安裝文檔信息等內容
]#less INSTALL ]#less README
執行./configure –prefix=/usr/local/apache –sysconfdir=/etc/httpd命令,指定安裝位置和配置文件位置
]#./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd
第二步:make
執行make根據makefile文件,構建應用程序
]#make
第三步:make install
]#make install
cd到/usr/local/apache目錄,查看安裝結果查找到bin目錄下的apachectl(這是一個腳本,可以控制啟動apachectl服務的)。并且執行bin/apachectl start命令開啟服務,使用netstat -tan 查看80端口屬于監聽狀態及表示服務已經開始運行。
自定義編譯安裝之后,將其整體安裝在了/usr/local/*文件下,卸載時只需刪除該文件夾即可。
但是,此時系統路徑是無法讀取該配置文件的,所以服務可能無法啟動,需要配置其部分文件。
/usr/local/apache]#ls bin ab apr-1-config apxs dbmmanage envvars-std htdbm htpasswd httxt2dbm rotatelogs apachectl apu-1-config checkgid envvars htcacheclean htdigest httpd logresolve
安裝后的配置
(1)導出二進制程序目錄至path環境變量中
編輯文件/etc/profile.d/name(以程序名命名).sh輸入export path=/payh/to/bin:$path
]#vim apaceh.sh ]#cat apaceh.sh export PATH=$PATH:/usr/local/apache/bin
(2)導出庫文件路徑
編輯/etc/ld.so.conf.d/name.conf
添加新的庫文件所在目錄至此文件中;
]#vim /etc/ld.so.conf.d/apache.conf ]#cat /etc/ld.so.conf.d/apache.conf /usr/local/apache/lib
讓系統重新生成緩存
執行ldconfig[-v]命令
]#ldconfig -v /usr/local/apache/lib: libexpat.so.0 -> libexpat.so.0.5.0 libapr-1.so.0 -> libapr-1.so.0.5.1 libaprutil-1.so.0 -> libaprutil-1.so.0.5.3
(3)導出頭文件
基于鏈接的方式實現
ln -sv
]#ln -sv /usr/local/include/ /usr/include/apache "/usr/include/apache" -> "/usr/local/include/"
(4)導出幫助手冊
編輯/etc/man.config文件
添加一個manpath
MANPATH /usr/local/apache(添加此段語句) /usr/local/apache]#ls man man1 man8
至此整個編譯安裝完成!
安裝后問題報錯
啟動服務失敗
]#service httpd start 正在啟動 httpd:httpd: Syntax error on line 163 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_ldap.so into server: /etc/httpd/modules/mod_ldap.so: undefined symbol: apr_ldap_ssl_init [失敗]
問題分析;/etc/httpd/conf/httpd.的第163行不能加載配置 這個apr_ldap_ssl_init到底是什么鬼,目前未知。
解決辦法,注釋掉/etc/httpd/cof/httpd.conf第163,164行,并且啟動成功
]#service httpd start 正在啟動 httpd:httpd: apr_sockaddr_info_get() failed for \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xa7\xd9\x85 \xd8\xb9\xd9\x 84\xd9\x8a\xd9\x83\xd9\x85 httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName [確定]
yum安裝links之后測試成功
本地ip測試可訪問(需關閉防火墻)iptables -F
完
原創文章,作者:M20-1馬星,如若轉載,請注明出處:http://www.www58058.com/39288