歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

tarball方式編譯安裝及升級-make、patch

tarball方式編譯安裝及升級-make、patch   1、概念: 原碼進行編譯成二進制機構可執行程序,先要make與偵測程序一般是config一起生成編譯連接文件makefile,再由makefile編譯成可執行文件。 Tarball其實是原碼的tar打包與壓縮的包。 rpm是指linux商家幫你編譯好了,省去了長時間編譯而發布的包,但不同類型的系統就不能用。  www.2cto.com   函數庫即提供外部調用的,有點像dll。   2、gcc,是C語句的編譯器,一般是先編譯成目標文件,再連結成一個可執行文件。   3、make可以方便進行編譯,因為它把要編譯的命令及順序都寫到makefile這個文件裡了。   www.2cto.com   4、makefile文件放在程序的原碼裡的一級目錄,它的語法: [root@www ~]# vi makefile LIBS = -lm  #這是變量 OBJS = main.o haha.o sin_value.o cos_value.o CFLAGS = -Wall main: ${OBJS}  gcc -o $@ ${OBJS} ${LIBS}   <==那個 $@ 就是 main !$@ 代表目前的標的(target) clean:  rm -f main ${OBJS}   #標的:有相關性原代碼文件   #第二行開頭要tab一下,這一行就是執行的命令,如腳本命令   5、具體目錄規則如下:     a、最好將 tarball 的原始資料解壓縮到 /usr/local/src 當中;     b、安裝時,最好安裝到 /usr/local 這個預設路徑下;     c、考慮未來的反安裝步驟,最好可以將每個軟體單獨的安裝在 /usr/local 底下;     d、為安裝到單獨目錄的軟體之 man page 加入 man path 搜尋:如果你安裝的軟體放置到 /usr/local/software/ ,那麼 man page 搜尋的設定中,可能就得要在 /etc/man.config 內的 40~50 行左右處,寫入如下的一行:      MANPATH /usr/local/software/man     這樣才可以使用 man 來查詢該軟體的線上文件啰!   6、偵測配置程序./configure --help ,可以查看支持參數及說明 一般有的參數是安裝到哪個目錄的參數:--prefix=/path   7、一般的步驟(以ntp為例): cd /usr/local/src  tar -zxvf /root/ntp-4.2.4p7.tar.gz  cd ntp-4.2.4p7/ cat INSTALL  ./configure --help | more ./configure --prefix=/usr/local/ntp make clean; make make check #此步如果不檢測也行 make install   8、原碼進行更新升級:     a、cat ~/main_0.1_to_0.2.patch  #查看第一行它的相對目錄是什麼樣的     b、用patch -p數字 < patch_file進行更新,這裡的數字表示舊的目錄要去掉幾個/,如果不去則用patch -p1 < patch_file,要根據a步來判斷。如main-0.1/xxx 與 main-0.2/xxx 進行對比,而你現在就在main-0.1目錄下,那麼可以這樣patch -p1 < ../main_0.1_to_0.2.patch     c、一般會發布更新包,以.patch為後綴,且會標明從什麼版本到什麼版本,不能跨多版本升級的,要順序升級,如跨了多個更新包,則要把之前的更新包一個個更新     d、make clean; make     make check #此步如果不檢測也行     make install     如果報錯,可能就需要執行一下./configure,patch只是更新了有變化的原代碼而已。     e、如果 patch 錯誤呢?我們的 patch 是可以還原的啊!透過patch -R < ../main_0.1_to_0.2.patch 即可。(main_0.1_to_0.2.patch只是個例子)  
Copyright © Linux教程網 All Rights Reserved