CentOS程序包管理、下

CentOS程序包管理(3)
應用程序的編譯安裝(C/C++)

爲什麼要進行應用程序源代碼的編譯安裝?
    1.對應應用程序的程序包不能直接獲取到;
    2.在已經編譯好的二進制格式的程序的功能不包含我們所需要的;
    3.在已經編譯好的二進制格式的程序中,包含太多的我們所不需要的功能;

軟件項目管理工具:
    C/C++:make
        Makefile

應用程序源代碼的分類:
    1.由程序員直接打包的源代碼
        name-VERSION.tar.gz
    2.由第三方利用rpm工具製作的rpm源代碼包:
        name-VERSION-release.src.rpm

源代碼的組織形式:
    1.一個應用程序包含多個文件;
    2.某個文件中的不同的代碼段之間,甚至不同文件的代碼段之間都可能存在依賴關係;

應用程序源代碼的編譯過程:
    源代碼 --> 預處理(預處理器,CPP) --> 編譯(編譯器,CC[gcc]) --> 彙編(彙編器) --> 鏈接(鏈接器) --> 用於執行操作的二進制程序文件

Makefile文件的功能:
    1.包含了各個程序源代碼文件之間的關係;
    2.決定文件的編譯順序;
    3.使用哪個預處理器進程何種預處理操作;
    4.使用哪個編譯器進程何種編譯操作;
    ...

程序員通過使用專用工具,對於所有的源代碼文件進行內容的分析和提取,並構建出一個同一的makefile文件的絕對模板,即:Makefile.in

有了這個模板,用戶可以根據自己的需求,自行構建Makefile文件,從而可以實現個性化的編譯過程;幫助用戶生成Makefile文件的是一個名爲"configure"的腳本;

開發工具:
    autoconf:幫助用戶生成configure腳本文件;
    automake:幫助用戶生成Makefile.in的模板文件;

建議:在獲取任何源代碼包並解壓縮之後,要去讀取其中隨程序源代碼提供的"INSTALL"或"README"類的文檔文件,以獲知該應用程序源代碼的編譯步驟;

開源應用程序的源代碼的獲取方式:
    1.官方自建的資源站點:
        apache.org(ASF)
        MariaDB --> mariadb.org
        varnish-cache.org
        ...

    2.代碼託管站點:
        SourceForge
        Github
        code.google.com

Linux中進行C/C++源代碼編譯時使用的編譯器:gcc,GNU C Compiler

在使用NAT模式聯網進行軟件包的安裝的時候如果出現/var/run/yum.pid 已被鎖定,PID 爲 4040 的另一個程序正在運行等相同問題,則~]# rm -f /var/run/yum.pid
在執行安裝命令~]# yum install gcc

編譯源代碼所需的開發環境:(程序包組)
    CentOS 7:
        Development Tools
        Compatibility Libraries

    CentOS 6:
        Development Tools
        Server Platform Development

注意:程序包組中所包含的開發環境並不是非常完整,如果某個應用程序在編譯時有其他環境要求的話,需要安裝對應應用程序的開發工具包;
    如果有rpm格式的開發工具包,其名稱爲name-devel-VERSION-release.rpm,則可以使用yum直接安裝;
    如果沒有對應的rpm格式的開發工具包,則需要優先編譯安裝開發工具;

編譯源代碼安裝應用程序的三大步驟:
1.利用configure腳本生成Makefile文件;
~]# ./configure [option]...
--help
--prefix:選擇程序安裝的路徑;
--enable-function:
--with-function:

2.使用項目管理工具"make"進行編譯;
    注意:有一些應用程序在實施編譯操作之前需要測試(make test)

3.使用"make install"命令進行編譯後的二進制文件的最後的安裝;

編譯安裝完成以後的收尾工作:
1.導出二進制文件的路徑;
2.導出庫文件路徑;
3.導出頭文件路徑(可選);
4.導出幫助文件路徑;

嘗試編譯安裝httpd:(這些安裝包首先要事先存在於你的系統內存當中,如果沒有可以到相關網站進行下載)
1.安裝apr
~]# tar xf apr-1.5.2-tar.bz2
~]# cd apr-1.5.2
~]# ./configure --prefix=/usr/local/apr-1.5.2
~]# make [-j 4]
~]# make install

2.安裝apr-util
    ~]# tar xf apr-util-1.5.4-tar.bz2
    ~]# cd apr-util-1.5.4
    ~]# ./configure --prefix=/usr/local/apr-util-1.5.4 --with-apr=/usr/local/apr-1.5.2
    ~]# make [-j 4]
    ~]# make install

3.安裝httpd
    ~]# tar xf httpd-2.4.29-tar.bz2
    ~]# cd httpd-2.4.29
    ~]# ./configure --prefix=/usr/local/apache-2.4.29 --with-apr=/usr/local/apr-1.5.4 --with-apr-util=/usr/local/apr-util-1.5.4 --with-pcre
    ~]# make [-j 4]
    ~]# make install

    注:因爲需要pcre的支持,所以需要事先安裝pcre-devel包;

收尾工作:
    1.導出二進制文件:
        創建一個文件:/etc/profile.d/httpd.sh
            export PATH=/usr/local/apache-2.4.29/bin:$PATH
    2.導出庫文件:
        創建一個文件:/etc/ld.so.conf.d/httpd.conf
            /usr/local/apache-2.4.29/lib64
    3.導出頭文件;
        創建符號鏈接:
            ~]# ln -sv /usr/local/apache-2.4.29/include /usr/include/httpd
    4.導出幫助文檔:
        對於CentOS7來說,在導出二進制文件時已經自動導出了幫助文檔;如果沒有成功導出,則需要在/etc/man_db.conf文件中添加一行:
            MANPATH_MAP=/usr/local/apache-2.4.29/bin /usr/local/apache-2.4.29/man

        對於CentOS6來說,需要手動導出:
            在/etc/man.config中添加一行:
                MANPATH=/usr/local/apache-2.4.29/man
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章