1. 程式人生 > >linux下如何使用configure/make/make install命令編譯安裝解除安裝程式

linux下如何使用configure/make/make install命令編譯安裝解除安裝程式

原始碼的安裝一般由3個步驟組成:配置(configure)、編譯(make)、安裝(make install)。安裝成功的原始碼就是所謂的可執行檔案,在你不需要的時候,也是可以刪除/解除安裝(remove/uninstall)的。下面就逐個進行分析:

一、原始碼的配置

配置命令就是configure命令。一般來說,configure檔案是位於原始碼根目錄下的一個可執行的指令碼檔案,它有很多選項,而且不同軟體的選項都不完全一致。可以在待安裝的原始碼目錄下使用命令./configure –help可以輸出詳細的選項列表。

其中有一個通用的選項,叫做–prefix選項,目的是配置安裝目錄。

如果不配置該選項,安裝後可執行檔案預設放在/usr/local/bin,庫檔案預設放在/usr/local/lib,配置檔案預設放在/usr/local/etc,其它的資原始檔放在/usr/local/share,比較凌亂。

如果你想統一存放,或者想指定到另外的一個路徑下,你可以人工配置–prefix引數,如:

./configure --prefix=/usr/local/test

那麼,安裝後的所有資原始檔都會被放在/usr/local/test目錄中,不會分散到其他目錄。

另外,使用–prefix選項的另一個好處是方便解除安裝軟體或移植軟體。當某個安裝的軟體不再需要時,只須簡單的刪除該安裝目錄,就可以把軟體解除安裝得乾乾淨淨。

二、原始碼的編譯

配置完畢之後,一般都會提示你,直接執行make命令進行編譯。此時你照做就好,程式就會開始自動編譯。

有一個要注意的就是,考慮到目前的計算機一般都是多核的,如果你想人工加快程式的編譯速度,可以手工指定一個make命令的一個引數“-j8”或者“-j16”,後面的數字表示的就是用幾個核進行編譯,數字越大,編譯速度越快。當然,要說明的是,這裡的編譯速度與核心的個數,並不是成正比的。而且,具體多少個任務同時執行為佳,還需要根據具體的機器配置,任務數太多,反而效果不好。

比如我自己做過的一個linux核心的編譯過程測試,使用不同的引數編譯的時間如下:

  • 用make:40分16秒;
  • 用make -j4:23分16秒;
  • 用make -j8:22分59秒;

另外,這個方案不是完全沒有弊端的,如果專案的Makefile不規範,沒有正確的設定好依賴關係,並行編譯的結果就是編譯不能正常進行。如果依賴關係設定過於保守,則可能本身編譯的可並行度就下降了,也不能取得最佳的效果。

三、程式的安裝

編譯完成之後,就是安裝。這裡的安裝,其實就是把編譯出來的可執行檔案,以及一堆的標頭檔案和依賴庫,以及文件資料等,按照linux系統約定的規則,拷貝到你事先指定的目錄下去。所以,與其叫安裝,其實就是一個拷貝的過程。

同樣,這裡也有一點要說明的是,很多時候,手冊或者提示資訊裡都只是告訴你,執行“make install”命令來進行安裝。然而,你執行了這個命令之後,往往會遇到一些錯誤的提示。經過一番排查之後,你會發現,就是因為許可權不夠,導致檔案拷貝失敗。於是,我建議你,最好養成一個習慣,每次在“make install”的命令前加上sudo的許可權,如下:

sudo make install

四、程式的解除安裝

當然,要解除安裝程式,也可以在原來的make目錄下用一次make uninstall,但前提是Makefile檔案有uninstall命令。

而如果你安裝時沒有配置–prefix選項,原始碼包也沒有提供make uninstall命令,則可以通過以下方式來解除安裝:

找到make install之後產生的這個檔案install_manifest.txt

裡面有安裝的所有東西的路徑,使用下述命令逐個刪除它們即可。

cat install_manifest.txt | sudo xargs rm