Linux 編譯安裝源碼包


程序包編譯安裝
    *.src.rpm→安裝后,使用rpmbuild命令制作成二進制格式的rpm  包,而后再安裝;
    源代碼組織格式:
        多文件:文件中的代碼段之間,很有可能存在跨文件依賴關系;
    各個語言的項目管理器:
        C,C++:make;
        Java:maven;
    make執行過程:
        make針對每一個源代碼都有一個專用的配置文件,它會根據配置文件作出決定,比如在預處理階段,決定調用那個預處理器如何預處理;在編譯階段決定調用哪個編譯器如何執行編譯,先編譯哪個文件,后編譯哪個文件;最后編譯生成的文件要放到那些目錄等;
            這個配置文件就是makefile,因為不同用戶的需求不同,所以決定了makefile不可能是事先存在的,需要根據需求而臨時生成的,那么它是怎么生成的那:由Makefile.in生成;makefile.in就類似一個模板,用戶選擇好不同的參數之后根據模板而生成makefile,比如事先設置各種配置文件的安裝路徑等;那么問題來了:Makefile.in這個模板是怎么生成的那,它是由configure這個腳本生成的;configure腳本允許用戶傳遞給它一些選項用來指明程序包的編譯參數、啟用特性、安裝路徑等;
                大體過程:configure通過用戶指定的選項然后結合Makefile.in模板來生成makefile文件;
    編譯安裝三步驟:
        ./configure
            通過選項傳遞參數,指定啟用特性,安裝路徑;執行時會參考用戶指定的參數以及Makefile.in模板生成makefile文件;
            檢各個啟用的功能所依賴的外部環境;
        make
            根據makefile文件,構建應用程序;
        make install:其實這一步就是把編譯(構建)好的程序的文件放到相對應的目錄下,使用cp命令也可以完成;
    開發工具:
        一般情況下源碼包都會自帶configure,但是也有的源碼包不帶,所以就需要我們自己生成它,如果手動的一步一步的編寫這個就腳本無疑是很費時間的,所以就有了可以自動生成它的開發工具;
        autoconf:生成configure腳本;
        automake:生成Makefile.in文件;
            因不同的需求而啟動的功能有所不同,所以導致configure也是不同的,所以autoconf也是需要根據配置文件來生成configure腳本的;Makefile.in同理;
    建議:安裝前查看INSTALL、README說明文本;
    開源代碼獲取途徑:
        官方自建站點
            apache.org(ASF)
            mariadb.org
            …
        代碼托管
            SourceForge
            Github.com
            code.google.com
    編譯C源代碼
        前提:提供開發工具和開發環境;
        開發工具:gcc,make;
        開發環境:開發庫,頭文件;
        通過“包組”提供開發工具;
            Centos 6 常用開發庫:“Development Tools”,“Server Platform Development”;
            Centos7  常用開發庫:“Development Tools”;
        
        第一步  ./configure
            選項:指定安裝位置,指定啟用的特性;
            --help:查看幫助;
                --prefix=/PATH/TO/SOMEWHERE:指定默認安裝目錄;默認安裝到/usr/local/
                --sysconfdir=/PATH/TO/SOMEWHERE:指明配置文件安裝的路徑;
                System Types:指明目標系統平台,可以實現交叉編譯;
                    不同軟件的源碼包實現功能不同,所以選項也各有不同,根據情況隨機應變;
                Optional Features:可選特性;
                    可以啟用或關閉特性,選項略;
                Optional Packages:定義依賴到的程序包,跟依賴關系相關;
        第二步  make
        第三步  make install
    安裝后的配置:
        導出二進制程序目錄至環境變量PATH中
            編輯文件:/etc/prefile.d/NAME.sh
                添加export PATH=/PATH/TO/BIN:$PATH
        導出庫文件路徑
            編輯/etc/ld.so.conf.d/NAME.conf
                添加新的庫文件所在目錄至此文件中;
            再讓系統重新生成緩存:
                ldconfig -[v]
        導出頭文件
            基於符號鏈接的方式實現;
            ln -s
        導出man手冊
            編輯/etc/man_db.conf文件;
            
            
注:根據馬哥視頻做的學習筆記,如有錯誤,歡迎指正:侵刪

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM