1. 程式人生 > >程序包

程序包

源代碼 程序員 二進制 用戶

程序包管理之編譯源代碼安裝

為什麽要進行源代碼編譯安裝?

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

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

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

1.想要使用某個程序包,但是找不到可用的二進制包;

2.想要使用的程序包有二進制格式的,我們所需要的的功能或特性並沒有被編譯;

程序的源代碼包有兩種格式:

原始的源代碼包:name-VERSION.tar.gz

tar xf命令釋放包中的源碼文件

rpm封裝的源代碼包:name-VERSION.release.src.rpm

rpm -ivh 將源代碼文件安裝到某個目錄中;

源代碼程序包的組織形式:

多個源代碼文件,

同一個文件的不同代碼段或者式不同文件的不同代碼段之間可能有依賴關系;

在編譯源代碼的時候,必須要首先編譯某些代碼段,或者說必須先編譯某個文件中的代碼段,然後才能進行後續的編譯;

在源代碼文件之間可能存在跨文件的依賴關系,這種依賴關系只有其作者最為清楚

程序員為了讓用戶能夠比較輕松的了解文件與文件之間,代碼段與代碼段之間的依賴關系,他們會編寫說明性文檔;


後來程序員會為每一個源代碼文件附加一個頭部信息,用以說明文件和代碼段的依賴關系,程序員開發了一個工具專門提取此類信息並匯總,結合程序員給提供的配置末班,有針對性的生成按章的說明文檔,其中包括:此次編譯調用哪個預處理器? 如何進行預處理? 調用哪個編譯器? 調用哪個匯編器? 如何進行匯編? 程序需要安裝在那個路徑下?


源代碼項目管理工具

C/C++: make

java:maven

python:buildout

說明性的文檔:makefile 這樣的文件並不是固定不變的,而是根據用戶進行選擇而進行不斷變化的

makefile文件用makefile.in(makefile.win)的模板生成的

利用configure腳本,接受用戶的選擇,並且configure腳本會將所有接收來的信息匯總到makefile.in模板上,替換模板中相應的內容,從而生成makefile文件

程序員編寫源代碼,並且給源代碼文件增加頭部信息;提供Makefile.in的模版文件;

需要autoconf工具,生成configure腳本;

需要automake工具,並利用configure腳本接受來的所有參數,創建makefile文件

有了正確的makefile文件,可以使用make命令來進行源代碼編譯

預處理-->編譯-->匯編-->鏈接-->生成可執行的二進制文件

安裝二進制文件--將二進制文件復制到正確的目錄路徑中 在現在的源代碼編譯過程中如果在源代碼包中已經有了configure腳本,我們還需要做下列工作

1.使用./configure腳本根據用戶所提供的選項信息生成makefile文件

2.make

3.make install

建議:在真正的安裝程序包之前最好先查看源代碼包中的install的文件,如果沒有這個文件,則查看readme的文件;

如何獲得開源程序的源代碼包

1.發布程序的官方站點 apache.org mariadb.org kernel.org

2.代碼托管站點

SourceForge

Github.com

code.google.com

在Linux系統上進行源代碼編譯安裝的前提:

1.編譯開發環境必須符合要求

centos6系統

yum groupinstall"Development tolls" "server platform development"

centos7系統

yum groups install "Development tolls"

2.編譯器要符合要求

gcc,cpp,make,automake...

3.編譯時所用到的標準庫要完備 glibc,c標準庫

滿足上述條件之後,接下來可以進行源代碼編譯安裝

1.運行configure腳本

大量的選項:置頂安裝過程中所用到的各種路徑,啟動或關閉的特性等

--help:獲取該程序包所支持的所有選項

選項的分類

安裝路徑選項

--prefix=路徑(/PATH/TO/SOFTWARE_INSTALL)

系統類型選項

如果所有的系統類型選項都不選擇,則默認在本機的默認操作系統和本級的平臺架構基礎之上進行編譯,也可以在編譯的時候選擇其他文件系統和其他的平臺類型,這種情況通常稱為交叉編譯;

可選特性選項:

--disable-FEATURE

--enable-FEATURE

在編譯源代碼的時候,選擇啟用或禁用某項功能或特性

可選程序包選項:

在編譯源代碼的時候,源代碼中的某些特性可能會依賴其他外部程序包

--with-PACKAGE

--without-PACKAGE

選擇使用或不使用外部程序包

上述命令及選項之後會在源代碼目錄中自動創建出makefile文件

2.make [-j] #(不能超過處理器核心數)

3.make install

源代碼安裝之後,要做收尾工作

1.到處二進制程序所在的目錄到PATH變量中;

在/etc/profile.d/name.sh

export PATH=/PATH/TO/BINARY:$PATH

source /etc/profile.d/name.sh

2.導出庫文件:

編輯/etc/ld.so.conf.d/name.conf

/PATH/TO/SOFTWARE_LIBRARY

ldconfig [-v]

3.導出頭文件:

創建對應的符號鏈接

ln -sv /PATH/TO/HEAD_FILE /uer/include/name

4.導出幫助文件

centos7中默認已經導出幫助文件

centos6

編輯/etc/man.config文件,在該文件中添加一個新行

MANPATH=/PATH/TO/MAN_FILE


舉例安裝httpd-2.4.18

1.首先要解決開發工具環境;

yum groupinstall "Development tools"


2.使用適合httpd-2.4.18版本的apr及apr-util工具;

安裝apr工具

~]# tar xf apr-1.5.2.tar.bz2 -C /usr/src

~]# cd /usr/src/apr-1.5.2

~]# ./configure --prefix=/usr/local/apr-1.5.2

~]# make

~]# make install


安裝arp-util工具

~]# tar xf apr-util-1.5.4.tar.bz2 -C /usr/src

~]# cd /usr/src/apr-util-1.5.4

~]# ./configure --prefix=/usr/local/apr-util-1.5.4 --with-apr=/usr/local/apr-1.5.2

~]# make

~]# make install


3.需要安裝pcre-devel以滿足httpd的正則表達式使用需求;

yum -y install pcre-devel


編譯安裝httpd:

~]# tar xf httpd-2.4.18.tar.gz -C /usr/src

~]# cd /usr/src/httpd-2.4.18

~]# ./configure --with-apr=/usr/local/apr-1.5.2 --with-apr-util=/usr/local/apr-util-1.5.4

~]# make

~]# make install


收尾:

1.導出二進制文件:

vim /etc/profile.d/httpd.sh

export PATH=/usr/local/apache2/bin:$PATH


source /etc/profile.d/httpd.sh


2.導出庫文件:

vim /etc/ld.so.conf.d/httpd-x86_64.conf

/usr/local/apache2/modules


ldconfig -v


3.導出頭文件:

ln -sv /usr/local/apache2/include /usr/include/httpd



程序包