源代碼編譯

CentOS程序包管理器之編譯安裝

爲什麼要進行源代碼編譯安裝?

1.對應的程序包並不能直接獲取到;

2.已經編譯好的二進制中,尚不包含我們所需要的功能;

3.已經編譯好的二進制中,包含的功能太多,我們並不需要;


源代碼包有兩種:

由程序員直接打包的源代碼:name-VERSION.tar.gz

由第三方利用rpm工具製作的rpm源代碼包:name-VERIONS-release.src.rpm

/usr/src/name-VERIONS


源代碼的組織形式:

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章