在linux系統中安裝軟件的其中一種:源碼安裝的方法是,先輸入./configure,然后輸入make,最后make install。或許有人留意到沒有,這些軟件的根目錄中開始是沒有Makefile的,在執行了./configure后會生成了很多奇怪名字的文件.
configure是一個腳本,它能設置源程序來適應各種不同的操作系統平台,並且根據不同的系統來產生相應的makefile文件,Makefile 規定了用什么編譯器、編譯參數等信息。從而可以使你的源代碼能在不同的操作系統平台上被編譯出來。比如它會檢測你是不是有CC或GCC。
可以通過在 configure 后加上參數來對安裝進行控制,比如代碼:
./configure --prefix=/usr
上面的意思是將該軟件安裝在 /usr 下面,執行文件就會安裝在 /usr/bin (而不是默認的 /usr/local/bin),資源文件就會安裝在 /usr/share(而不是默認的/usr/local/share.
如果你安裝時候指定的路徑為:
--prefix=/usr/local/XXX,那么卸載的時候只需要把XXX這個文件夾刪除即可!!!!!,因為該軟件安裝的所有文件都是放置在XXX這個文件夾。但如果你進行源碼包安裝的時候沒有指定位置(默認值一般為/usr/local/),或指定的位置為--prefix=/usr/local,則這時候你安裝軟件生成的文件將分別存儲在/usr/local/里面的bin、lib或ect等目錄中,這時候卸載起來就相對麻煩一點了。
可以通過 ./configure --help 察看詳細的各個參數的說明。
make install是用來安裝的,它也從Makefile中讀取指令,安裝到指定的位置。這條命令來進行安裝(當然有些軟件需要先運行 make check 或 make test來進行一些測試),這一步一般需要你有 root 權限(因為要向系統寫入文件),以通常得用 sudo make install。.
當我們在使用make命令時,常常會在make后面加上其他單詞,比如check,install,installcheck…這些單詞都是make的參數,我們稱之為“目標(targets)”。
最常見的幾個目標:
make all:編譯程序、庫、文檔等(等同於make)
make install:安裝已經編譯好的程序。復制文件樹中到文件到指定的位置
make unistall:卸載已經安裝的程序。
make clean:刪除由make命令產生的文件
make distclean:同時刪除./configure和make產生的臨時文件
make check:測試剛剛編譯的軟件(某些程序可能不支持)
make installcheck:檢查安裝的庫和程序(某些程序可能不支持)
make dist:重新打包成packname-version.tar.gz
上面這些很多人都知道,但是configure這個腳本是從哪來的呢
它其實是由autoconf和automake兩個工具來生成的。和cmake一樣用類似的方式最后生成makefile,不過cmake卻簡約很多
automake的寫法就不寫了,了解下就可以了