編譯安裝

程序包編譯安裝java


爲何要對程序包進行編譯安裝?nginx


 有些特性是編譯選定的,若是編譯未選定此特性,將沒法使用。c++

  rpm包的版本會落後於源碼包,甚至落後不少。apache


一般咱們的安裝分兩鍾:vim


第一是從網上下載testapp-VERSION-release.src.rpm源碼包,編譯後進行安裝---咱們今天探討的問題
緩存

第二種是使用rpmbuild命令製做成二進制格式的rpm包,然後再安裝;
bash





  首先了解一個源碼到執行經歷了哪些路途網絡

       代碼執行的過程:源代碼 --> 預處理 --> 編譯(gcc) --> 彙編 --> 連接 --> 執行app

       源代碼組織格式多文件:文件中的代碼之間,極可能存在跨文件依賴關係;maven




    源碼安裝的原理是什麼呢?


   C、C++: make (configure --> Makefile.in --> makefile)


源碼安裝過程的簡單介紹:源碼程序包裏有一個configuer的命令,它經過Makefile.in模版生成一個makefile文件。
make經過makefile文件的設定組織源碼生成一個二進制程序包,而後makeinstall安裝到指定路徑就能夠了。 注:make 是c、c++源碼的項目管理工具
 小拓展:java: maven  注:maven是jave源碼的項目管理工具



C代碼編譯安裝三步驟:

    建議:安裝前查看INSTALL,README

    第一步:./configure:

 做用:(1) 經過選項傳遞參數,指定啓用特性、安裝路徑等;執行時會參考用戶的指定以及Makefile.in文件生成makefile;

       (2) 檢查依賴到的外部環境;


第一步使用方法詳解:

    

       ./configure  選項:指定安裝位置、指定啓用的特性

                        --help: 獲取其支持使用的選項

    選項分類:

        安裝路徑設定:

    --prefix=/PATH/TO/SOMEWHERE: 指定默認安裝位置;默認爲/usr/local/

    --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安裝位置;


             可選特性:

         --disable-FEATURE

         --enable-FEATURE[=ARG]


          可選包:

        --with-PACKAGE[=ARG]

        --without-PACKAGE



    第二步:make:

    做用:根據makefile文件,構建應用程序;   注:直接make就行


    第三步:make install                     注:直接make install就行

      做用:就是爲了把編譯好的文件放在指定的路徑下 【配置文件、庫文件 幫助文件】)



你們確定如今就像去編譯了吧,咱們還須要一點準備工做

   

  編譯C源代碼:前提:提供開發工具及開發環境

    開發工具:make(項目構成工具), gcc (c源碼的編譯器)

    開發環境:開發庫(glibc:標準庫),頭文件


 以上須要的環境,咱們只須要安裝兩個包組,就能夠愉快的編譯了   

       CentOS 6和7: "Development Tools", "Server Platform Development",


   

  安裝之後,小夥伴們別急。想使用勞動成果還須要作一下工做呢

  

    安裝後的配置:

    (1) 導出二進制程序目錄至PATH環境變量中;

    編輯文件/etc/profile.d/NAME.sh

    export PATH=/PATH/TO/BIN:$PATH


    (2) 導出庫文件路徑

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

    添加新的庫文件所在目錄至此文件中;


    讓系統從新生成緩存:

    ldconfig [-v]


    (3) 導出頭文件

    基於連接的方式實現:

    ln -sv 


    (4) 導出幫助手冊

    編輯/etc/man.config文件

    添加一個MANPATH




舉例完整編譯nginx程序


前提:準備開發環境(編譯環境)

紅帽5 安裝「Development Tools」和「Developments Libraries」

拿到源程序後先tar解壓縮,而後cd到目錄裏面去

#tar xf tengine-1.4.2.tar.gz

#cd tegnine-1.4.2

./configure

   --prefix=/path/to/somewhere  注:軟件安裝的位置

   --sysconfdir=/path/to/conffile_path 注:指定配置文件的路徑

例如:./configure --prefix=/usr/local/tengine --conf-path=/etc/tengine/tengine.conf

#make  注:編譯

#make install 注:安裝

# /usr/local/tengine/sbin/nginx 注:啓動nginx程序

此時/usr/local/tengine/sbin不在環境變量裏,全部必須全路徑才能夠啓用。

 #vim /etc/profile

PATH=$PATH:/user/local/tengine/sbin 注:在export以前一行添加,而後讓系統重讀這個腳本

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC


#source /etc/profile 讓系統重讀此文件,須要重啓機器才能夠有效。或者不重讀,從新登錄一下機器也能夠生效

注意:

咱們安裝軟件包,若是安裝在非默認路徑下要修改path環境變量

一、修改PATH環境變量,以可以識別此程序的二進制文件路徑

  方法一:修改/etc/profile文件

  方法二:在/etc/profile.d/目錄創建一個以.sh爲名稱後綴的文件,在裏面定義export PATH=$PATH:/path/to/somewhere

二、默認狀況下,系統搜索庫文件的路徑/lib, /usr/lib,要增添額外搜尋路徑

   在/etc/ld.so.conf.d/ 中建立 .conf爲後綴名的文件,然後把要增添的路徑直接寫至此文件中(下次重啓能找到庫了)

  #ldconfig (執行此命令能夠從新搜尋庫文件)

           -v:顯示從新搜尋庫的過程

三、頭文件(二次開發的軟件提供輸出庫功能的,它都有頭文件),任何一個二進制程序要想調用別人的庫,要提早聲明幷包含到當前系統中


來。就須要include包含庫文件所提供的功能的

    頭文件裏有函數、參數、以及參數類型等相關屬性

 頭文件須要輸出給系統,默認:/usr/include

  自定義:增添頭文件搜尋路徑,使用連接

把/usr/local/tengine/include/ 連接到/usr/include/下有兩種方法

第一:ln -s /usr/local/tengine/include/*  /usr/include/  注:不應變文件名,把include下全部文件連接到/include這個目錄下

第二:ln -s /usr/local/tengine/include    /usr/include/tengine  注:把include目錄連接到include/下的一個目錄,並命名tengine

四、手動編譯的man文件不在標準路徑的時候。

  man文件路徑:安裝在--prefix指定的目錄下的man目錄。 標準:/usr/share/man

 方法一:man -M /PATH/TO/MAN_DIR COMMAND

 方法二:在/etc/man.config中添加一條「MANPATH //usr/local/tengine/man」


netstat:顯示網絡情況的命令

   -r:顯示路由表

   -n:以數字方式顯示

   -t:顯示tcp的鏈接

   -u:顯示udp鏈接

   -l:顯示監聽狀態的鏈接

   -p:顯示監聽指定的套接字的進程的進程號及進程名



&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&


瞭解:開發工具:autoconf: 生成configure腳本   automake:生成Makefile.in

      看了這個你大概知道源碼包裏configure和 Makefile.in怎麼來的了。





開源程序源代碼的獲取:

    官方自建站點:

    apache.org (ASF)

    mariadb.org

    ...

    代碼託管:

    SourceForge

    Github.com

    code.google.com

相關文章
相關標籤/搜索