源代碼編譯

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

相關文章
相關標籤/搜索