1. 程式人生 > >Linux編譯安裝中configure、make和make install各自的作用

Linux編譯安裝中configure、make和make install各自的作用

./configure是用來檢測你的安裝平臺的目標特徵的。比如它會檢測你是不是有CC或GCC,並不是需要CC或GCC,它是個shell指令碼。

make是用來編譯的,它從Makefile中讀取指令,然後編譯。

make install是用來安裝的,它也從Makefile中讀取指令,安裝到指定的位置。

AUTOMAKE和AUTOCONF是非常有用的用來發布C程式的東西。

1、configure

這一步一般用來生成 Makefile,為下一步的編譯做準備,你可以通過在 configure 後加上引數來對安裝進行控制,比如程式碼:

./configure --prefix=/usr

上面的意思是將該軟體安裝在 /usr 下面,執行檔案就會安裝在 /usr/bin (而不是預設的 /usr/local/bin),資原始檔就會安裝在 /usr/share(而不是預設的/usr/local/share)。

同時一些軟體的配置檔案你可以通過指定 --sys-config= 引數進行設定。有一些軟體還可以加上 --with、--enable、--without、--disable 等等引數對編譯加以控制,你可以通過允許 ./configure --help 察看詳細的說明幫助。

2、make

這一步就是編譯,大多數的原始碼包都經過這一步進行編譯(當然有些perl或python編寫的軟體需要呼叫perl或python來進行編譯)。

如果 在 make 過程中出現 error ,你就要記下錯誤程式碼(注意不僅僅是最後一行),然後你可以向開發者提交 bugreport(一般在 INSTALL 裡有提交地址),或者你的系統少了一些依賴庫等,這些需要自己仔細研究錯誤程式碼。

3、make install

這條命令來進行安裝(當然有些軟體需要先執行 make check 或 make test來進行一些測試),這一步一般需要你有 root 許可權(因為要向系統寫入檔案)


常見問題及解答(Q&A):

Q1: 安裝原碼程式時,都要執行三步:

./configure
make
make install

Q2:cc和gcc又是什麼?我在用./configure時,它老說我沒有cc,無法進行安裝,怎麼才能有cc?

A2:CC是gcc的連線,gcc是編譯器,你安裝的時候大概是沒有選擇開發工具。你自己到光碟上找一下gcc* 吧.裝上就行了。或者yum -y groupinstall "Development Tools" 自動安裝基本開發工具。

CC是makefile裡用來定義編譯器的,是為了方便程式碼移植而設定,因為不同的平臺可能用到不同的編譯器

Linux CC與Linux GCC的區別概括介紹:

從名字上看,老的unix系統的CC程式叫做C Compiler。但GCC這個名字按GNU的說法叫做Gnu Compiler Collection。因為gcc包含很多編譯器(C, C++, Objective-C, Ada, Fortran,and   Java)。所以它們是不一樣的,一個是一個古老的C編譯器,一個是編譯器的GNU的編譯器的集合(Gcc裡的C編譯器比CC強大太多了,所以你沒必要用CC)。當你呼叫gcc時不一定是呼叫的C/C++編譯器,是gcc根據副檔名自動識別並呼叫對應的編譯器,具體可查閱$man gcc。

補充一點如果執行 ./Configure 遇到了個問題

/lib/cpp fails sanity check的解決方法
  在某些軟體的時候,執行./configure 會報錯,錯誤提示為:
  configure: error: C++ preprocessor “/lib/cpp” sanity check
  check See `config.log’ for more details
解決辦法:出現該情況是由於c++編譯器的相關package沒有安裝,在終端上執行:
  $ sudo yum install glibc-headers gcc-c++