CentOS程序包管理器之編譯安裝程序員
爲何要進行源代碼編譯安裝?apache
1.對應的程序包並不能直接獲取到;maven
2.已經編譯好的二進制中,尚不包含咱們所須要的功能;ide
3.已經編譯好的二進制中,包含的功能太多,咱們並不須要;工具
源代碼包有兩種:開發工具
由程序員直接打包的源代碼:name-VERSION.tar.gzgoogle
由第三方利用rpm工具製做的rpm源代碼包:name-VERIONS-release.src.rpmspa
/usr/src/name-VERIONScode
源代碼的組織形式:orm
1.多文件組成
2.文件中的代碼之間,甚至是不一樣文件的代碼段之間均可能存在依賴關係;
源代碼的項目管理工具:
C/C++項目管理工具:make
Java項目管理工具:maven
源代碼 --> 預處理(預處理器,cpp) --> 編譯(編譯器,gcc) --> 彙編(彙編器) --> 連接(連接器) --> 用於執行操做的二進制文件
針對於每一個須要編譯的源代碼文件,均可能會有一個或多個被他依賴的文件或他所依賴的文件,這樣的信息會被保存到一個配置文件中;這個配置文件會告訴咱們:
1.調用哪一個預處理器,如何進行預處理;
2.調用哪一個編譯器,如何進行編譯;
3.文件的編譯順序等等;
這類文件通常是makefile,這樣的makefile文件並非事先存在的,也不是對全部用戶的需求都一視同仁的;
程序員可使用專用的工具,來對於全部的源代碼文件進行內容分析和抽取,構建出makefile文件,全部的makefile文件都有一個統一的模版——Makefile.in
用戶能夠根據本身的須要,自行構建makefile文件,從而實現可以知足本身需求的編譯過程
幫助用戶生成makefile文件的一般是一個名爲configure的腳本文件;
開發工具:
autoconf:幫助用戶生成configure腳本
automake:幫助用戶生成Makefile.in的模版文件
建議:任何的源代碼包,在解壓縮以後,都會提供INSTALL或README的文檔文件,咱們在編譯操做以前,最好先查閱此類文件的內容, 以肯定編譯過程;
開源程序的源代碼的獲取方式:
1.官方自建的站點:
apache.org(ASF)
mariadb.org
...
2.代碼的託管站點
SourceForge
Github
code.google.com
須要使用編譯器:gcc (GNU C Complier)
開發環境的安裝:
CentOS7:
1.yum groups install "開發工具"
yum groups install "Development Tools"
CentOS6:
yum groupinstall "Development Tools" "Server Platform Development"
"Desktop Platform Development"
2.yum install make automake autoconf gcc glibc qt ncurses
一般來說,Linux系統中的編譯安裝程序的三大步驟:
1.configure [options...]
2.make
3.make install
第一步:
./configure [options...] [VAR=VALUE]...
經常使用選項分類:
1.安裝路徑的設定:
--prefix=/PATH/TO/SOMEWHERE
指定默認的程序安裝路徑,若是不給該選項,默認路徑/usr/local/
--sysconfdir=DIR
指定配置文件的安裝路徑
2.系統類型:
3.可選特性:
--disable-FEATURE
在編譯過程當中禁用某種特性或功能
--enable-FEATURE[=ARG]
在編譯過程當中啓用某個特性或功能
4.可選程序包:
--with-PACKAGE[=ARG]
在編譯過程當中,選擇使用額外的程序包
--without-PACKAGE
在編譯過程當中,不使用額外的程序包
第二步:
make
第三步:
make install
編譯收尾工做:
/usr/local/apache2裏面會包含bin, sbin, etc, lib, lib64, include, man, ...
1.導出二進制文件:
建立一個文件: /etc/profile.d/httpd.sh
export PATH=/usr/local/apache2/bin:/usr/local/apache2/sbin:$PATH
2.導出庫文件:
建立一個文件:/etc/ld.so.conf.d/httpd.conf
/usr/local/apache2/lib64
ldconfig [-v]
3.導出頭文件:
在/usr/include目錄中,爲編譯安裝的軟件建立頭文件的符號連接:
ln -sv /usr/local/apache2/include /usr/include/httpd
4.導出幫助文件:
CentOS6: /etc/man.config
新添加一行:MANPATH=/usr/local/apache2/man
CentOS7: /etc/man_db.conf
新添加一行:MANPATH_MAP=/usr/local/apache2/bin /usr/local/apache2/man