./configure用法
阿新 • • 發佈:2019-02-17
安裝原碼程式時,都要執行三步:
1./configure
2 make
3 make install
這些都是典型的使用GNU的AUTOCONF和AUTOMAKE產生的程式的安裝步驟。
./configure是用來檢測你的安裝平臺的目標特徵的。比如它會檢測你是不是有CC或GCC,並不是需要CC或GCC,它是個shell指令碼。
make是用來編譯的,它從Makefile中讀取指令,然後編譯。
make install是用來安裝的,它也從Makefile中讀取指令,安裝到指定的位置。
AUTOMAKE和AUTOCONF是非常有用的用來發布C程式的東西。如果你也寫程式想使用AUTOMAKE和AUTOCONF,可以參考CNGNU.ORG上的相關文章。
------------------------------------------------------------------------------------------------
Configure命令的引數的中文詳細解釋(www.etooth.cn)
./configure
該指令碼將執行一些測試來猜測一些系統相關的變數並檢測你的操作 系統的特殊設定,並且最後在製做樹中建立一些檔案以記錄它找到了什麼.
預設設定將製作伺服器和應用程式,還有所有隻需要 C 編譯器的客戶端程式和 介面. 預設時所有檔案都將安裝到 /usr/local/pgsql.
你可以通過給出下面 configure 命令列選項中的一個或更多的選項來客戶化 製作和安裝過程:
--prefix=PREFIX
把所有檔案裝在目錄 PREFIX下面而不是 /usr/local/pgsql 裡.實際的檔案會安裝到不同的子目錄裡;甚至沒有一個檔案會直接 安裝到 PREFIX 目錄裡.
如果你有特殊需要,你還可以用下面的選項客戶化不同的子目錄 的位置.
--exec-prefix=EXEC-PREFIX
你 可以把體系相關的檔案安裝到一個不同的位置, EXEC-PREFIX,而不是 PREFIX 設定的地方.這樣做可以比較方便地在不同主機之間共享體系相關的檔案. 如果你省略這些,那麼 EXEC-PREFIX 就會被設定為等於 PREFIX 並且體系相關和體系無關的檔案都會安裝到同一棵目錄樹下, 這也可能是你想要的.
--bindir=DIRECTORY
為可執行程式宣告目錄,預設是 EXEC-PREFIX/bin, 通常也就是 /usr/local/pgsql/bin.
--datadir=DIRECTORY
設定所安裝的程式需要的只讀檔案的目錄.預設是 PREFIX/share. 請注意這個目錄和你放資料庫檔案的地方沒有任何關係.
--sysconfdir=DIRECTORY
用於各種各樣配置檔案的目錄,預設為 PREFIX/etc.
--libdir=DIRECTORY
庫檔案和動態裝載模組的目錄.預設是 EXEC-PREFIX/lib.
--includedir=DIRECTORY
C 和 C++ 標頭檔案的目錄.預設是 PREFIX/include.
--docdir=DIRECTORY
文件檔案,(除 “man(手冊頁)”以外, 將被安裝到這個目錄.預設是 PREFIX/doc.
--mandir=DIRECTORY
隨著 PostgreSQL 一起帶的手冊頁 將安裝到這個目錄.在它們相應的 manx子目錄裡. 預設是 PREFIX/man.
注 意: 為了減少對共享安裝位置(比如 /usr/local/include) 的汙染,configure 自動在 datadir, sysconfdir,includedir, 和 docdir 上附加一個 “/postgresql” 字串, 除非完全展開以後的目錄名字已經包含字串 “postgres” 或者 “pgsql”.比如,如果你選擇 /usr/local 做字首,那麼 C 的標頭檔案將安裝到 /usr/local/include/postgresql, 但是如果字首是 /opt/postgres,那麼它們將 被放進 /opt/postgres/include.
--with-includes=DIRECTORIES
DIRECTORIES 是一系列冒號分隔的目錄,這些目錄將被加入編譯器的標頭檔案 搜尋列表中.如果你有一些可選的包(比如 GNU Readline)安裝在 非標準位置,你就必須使用這個選項,以及可能還有相應的 --with-libraries 選項.
例子:--with-includes=/opt/gnu/include:/usr/sup/include.
--with-libraries=DIRECTORIES
DIRECTORIES 是一系列冒號分隔的目錄,這些目錄是用於查詢庫檔案的. 如果你有一些包安裝在非標準位置,你可能就需要使用這個選項 (以及對應的--with-includes選項).
例子:--with-libraries=/opt/gnu/lib:/usr/sup/lib.
--enable-locale
開啟區域支援.區域支援會帶來效能損失,但是如果 你不是在說英語的環境使用資料庫,那麼你很可能需要這個選項.
--enable-recode
開啟單位元組字符集記錄的支援.參閱 Section 5.3 獲取關於這個特性的詳細資訊.
--enable-multibyte
允許使用多位元組編碼.這個選項主要是用於象日語,韓語和中文 這樣的語言.閱讀 Section 5.2 獲取詳細資訊.
--with-pgport=NUMBER
把 NUMBER 設定為伺服器和客戶端的預設埠.預設是 5432. 這個埠可以在以後設定,不過如果你在這裡宣告,那麼 伺服器和客戶端將有相同的編譯好了的預設值.這樣會方便些.
--with-CXX
製作C++支援庫.
--with-perl
製作 Perl 介面模組.Perl 介面將被安裝到 Perl 模組通常的 安裝位置(典型的位置是 /usr/lib/perl), 所以你必須要有 root 許可權來執行安裝步驟(參閱 step 4).使用這個選項你需要安裝 Perl 5.
--with-python
制 作 Python 介面模組.你需要 root 許可權將 Python 模組安裝到它的 預設位置 (/usr/lib/pythonx.y). 要使用這個選項,你必須已經安裝了 Python 並且你的系統必須支援 共享庫.如果你想製作一個新的完整的二進位制直譯器,你只能自己 手工製作.
--with-tcl
製作那些需要 Tcl/Tk 的部件, 就是 libpgtcl,pgtclsh,pgtksh,pgaccess和PL/Tcl. 你也可以看看下面的 --without-tk.
--without-tk
如果你同時聲明瞭 --with-tcl 和這個選項,那麼那些 需要 Tk(也就是 pgtksh 和pgaccess)的程式將被排除在外.
--with-tclconfig=DIRECTORY, --with-tkconfig=DIRECTORY
Tcl/Tk 的安裝檔案 tclConfig.sh 和 tkConfig.sh, 她們裡面包含製作 Tcl 或 Tk 模組介面的配置資訊. Configure 通常會自動在她們的眾所周知的位置找到這些檔案,但是如果你 需要一個不同版本的 Tcl 或 Tk,你也可以宣告可以找到她們的目錄.
--enable-odbc
製作 ODBC 驅動包.
--with-odbcinst=DIRECTORY
宣告 ODBC 期望的odbcinst.ini配置檔案的路徑. 預設是 /usr/local/pgsql/etc 或者你宣告的 --sysconfdir 選項的內容. 安裝程式將會把一個預設的檔案安裝到那裡.
--with-krb4=DIRECTORY, --with-krb5=DIRECTORY
制 作支援Kerberos認證的東西.你可以選擇 Kerberos 版本 4 或 5,但不能同時選兩個. DIRECTORY 引數宣告 Kerberos 安裝的根目錄;預設假設是 /usr/athena 如果相關的標頭檔案和庫檔案不在常用的父目錄,那麼你必須 使用附加的 --with-includes 和 --with-libraries 選項.另一方面,如果所需要的檔案位於一個預設的搜尋目錄, (比如說,/usr/lib), 那你就不用輸入這些引數了.
configure 將在安裝之前檢查所需要的標頭檔案和庫檔案以確信你的 Kerberos安裝是完整的.
--with-krb-srvnam=NAME
Kerberos服務主的名稱. 預設是 “postgres”.通常沒有理由改變這個值.
--with-openssl=DIRECTORY
製作支援 SSL (加密的)聯接的postgres. 這個選項需要安裝 OpenSSL 包. DIRECTORY 引數宣告 OpenSSL 安裝的根目錄;預設時 /usr/local/ssl.
configure 將在安裝之前檢查所需要的標頭檔案和庫檔案以確信你的 OpenSSL 安裝是充分的.
--with-java
製作 JDBC 驅動以及相關的 Java 包. 這個選項要求你先安裝 Ant (當然還要有 JDK). 請參考程式設計師手冊 裡面 JDBC 驅動的文件獲取更多資訊.
--enable-syslog
開啟PostgreSQL 伺服器使用 syslog 日誌系統的功能. (使用這個功能並不意味著你必須用 syslog 做日誌,也不是說 伺服器預設會做這些,而是給你一個在執行時使用這個選專案的可能.)
--enable-debug
把 所有程式和庫以帶有除錯符號的方式編譯. 這意味著你可以通過一個偵錯程式執行程式來分析問題. 這樣做顯著增大了最後安裝的可執行檔案的大小, 並且在非 gcc 的編譯器上,這麼做通常還要關閉編譯器優化, 導致速度的下降.但是,如果有這些符號表的話,就可以極大 幫助定位可能發生問題的位置.目前,我們認為這個選項對於 生產用途而言是邊際變數,但是如果你正在進行開發工作,或者正在使用 beta 版本, 那麼你就應該開啟它.
--enable-cassert
開啟在伺服器中的 assertion 檢查, 它會檢查許多“不可能發生”的條件.它對於程式碼開發的用途 而言是無價之寶,不過這些測試稍微地減慢了一些速度. 這些斷言檢查並不一定都是針對嚴重錯誤的,因此一些相對無害的 小蟲子也可能導致 postmaster 重啟--只要它觸發了一次斷言失敗. 目前,我們不推薦在生產環境中使用這個選項,但是如果你在做開發 或者在使用 beta 版本的時候應該開啟它.
如果你喜歡用那些和 configure 找出來的不同的 編譯器,那麼你可以分別設定你的環境變數 CC 和 CXX,把它們設定為你選擇的程式. 類似地,你可以用 CFLAGS 和 CXXFLAGS 變數覆蓋預設編譯器標誌.比如:
env CC=/opt/bin/gcc CFLAGS='-02 -pipe' ./configure
1./configure
2 make
3 make install
這些都是典型的使用GNU的AUTOCONF和AUTOMAKE產生的程式的安裝步驟。
./configure是用來檢測你的安裝平臺的目標特徵的。比如它會檢測你是不是有CC或GCC,並不是需要CC或GCC,它是個shell指令碼。
make是用來編譯的,它從Makefile中讀取指令,然後編譯。
make install是用來安裝的,它也從Makefile中讀取指令,安裝到指定的位置。
AUTOMAKE和AUTOCONF是非常有用的用來發布C程式的東西。如果你也寫程式想使用AUTOMAKE和AUTOCONF,可以參考CNGNU.ORG上的相關文章。
------------------------------------------------------------------------------------------------
Configure命令的引數的中文詳細解釋(www.etooth.cn)
./configure
該指令碼將執行一些測試來猜測一些系統相關的變數並檢測你的操作 系統的特殊設定,並且最後在製做樹中建立一些檔案以記錄它找到了什麼.
預設設定將製作伺服器和應用程式,還有所有隻需要 C 編譯器的客戶端程式和 介面. 預設時所有檔案都將安裝到 /usr/local/pgsql.
你可以通過給出下面 configure 命令列選項中的一個或更多的選項來客戶化 製作和安裝過程:
--prefix=PREFIX
把所有檔案裝在目錄 PREFIX下面而不是 /usr/local/pgsql 裡.實際的檔案會安裝到不同的子目錄裡;甚至沒有一個檔案會直接 安裝到 PREFIX 目錄裡.
如果你有特殊需要,你還可以用下面的選項客戶化不同的子目錄 的位置.
--exec-prefix=EXEC-PREFIX
你 可以把體系相關的檔案安裝到一個不同的位置, EXEC-PREFIX,而不是 PREFIX 設定的地方.這樣做可以比較方便地在不同主機之間共享體系相關的檔案. 如果你省略這些,那麼 EXEC-PREFIX 就會被設定為等於 PREFIX 並且體系相關和體系無關的檔案都會安裝到同一棵目錄樹下, 這也可能是你想要的.
--bindir=DIRECTORY
為可執行程式宣告目錄,預設是 EXEC-PREFIX/bin, 通常也就是 /usr/local/pgsql/bin.
--datadir=DIRECTORY
設定所安裝的程式需要的只讀檔案的目錄.預設是 PREFIX/share. 請注意這個目錄和你放資料庫檔案的地方沒有任何關係.
--sysconfdir=DIRECTORY
用於各種各樣配置檔案的目錄,預設為 PREFIX/etc.
--libdir=DIRECTORY
庫檔案和動態裝載模組的目錄.預設是 EXEC-PREFIX/lib.
--includedir=DIRECTORY
C 和 C++ 標頭檔案的目錄.預設是 PREFIX/include.
--docdir=DIRECTORY
文件檔案,(除 “man(手冊頁)”以外, 將被安裝到這個目錄.預設是 PREFIX/doc.
--mandir=DIRECTORY
隨著 PostgreSQL 一起帶的手冊頁 將安裝到這個目錄.在它們相應的 manx子目錄裡. 預設是 PREFIX/man.
注 意: 為了減少對共享安裝位置(比如 /usr/local/include) 的汙染,configure 自動在 datadir, sysconfdir,includedir, 和 docdir 上附加一個 “/postgresql” 字串, 除非完全展開以後的目錄名字已經包含字串 “postgres” 或者 “pgsql”.比如,如果你選擇 /usr/local 做字首,那麼 C 的標頭檔案將安裝到 /usr/local/include/postgresql, 但是如果字首是 /opt/postgres,那麼它們將 被放進 /opt/postgres/include.
--with-includes=DIRECTORIES
DIRECTORIES 是一系列冒號分隔的目錄,這些目錄將被加入編譯器的標頭檔案 搜尋列表中.如果你有一些可選的包(比如 GNU Readline)安裝在 非標準位置,你就必須使用這個選項,以及可能還有相應的 --with-libraries 選項.
例子:--with-includes=/opt/gnu/include:/usr/sup/include.
--with-libraries=DIRECTORIES
DIRECTORIES 是一系列冒號分隔的目錄,這些目錄是用於查詢庫檔案的. 如果你有一些包安裝在非標準位置,你可能就需要使用這個選項 (以及對應的--with-includes選項).
例子:--with-libraries=/opt/gnu/lib:/usr/sup/lib.
--enable-locale
開啟區域支援.區域支援會帶來效能損失,但是如果 你不是在說英語的環境使用資料庫,那麼你很可能需要這個選項.
--enable-recode
開啟單位元組字符集記錄的支援.參閱 Section 5.3 獲取關於這個特性的詳細資訊.
--enable-multibyte
允許使用多位元組編碼.這個選項主要是用於象日語,韓語和中文 這樣的語言.閱讀 Section 5.2 獲取詳細資訊.
--with-pgport=NUMBER
把 NUMBER 設定為伺服器和客戶端的預設埠.預設是 5432. 這個埠可以在以後設定,不過如果你在這裡宣告,那麼 伺服器和客戶端將有相同的編譯好了的預設值.這樣會方便些.
--with-CXX
製作C++支援庫.
--with-perl
製作 Perl 介面模組.Perl 介面將被安裝到 Perl 模組通常的 安裝位置(典型的位置是 /usr/lib/perl), 所以你必須要有 root 許可權來執行安裝步驟(參閱 step 4).使用這個選項你需要安裝 Perl 5.
--with-python
制 作 Python 介面模組.你需要 root 許可權將 Python 模組安裝到它的 預設位置 (/usr/lib/pythonx.y). 要使用這個選項,你必須已經安裝了 Python 並且你的系統必須支援 共享庫.如果你想製作一個新的完整的二進位制直譯器,你只能自己 手工製作.
--with-tcl
製作那些需要 Tcl/Tk 的部件, 就是 libpgtcl,pgtclsh,pgtksh,pgaccess和PL/Tcl. 你也可以看看下面的 --without-tk.
--without-tk
如果你同時聲明瞭 --with-tcl 和這個選項,那麼那些 需要 Tk(也就是 pgtksh 和pgaccess)的程式將被排除在外.
--with-tclconfig=DIRECTORY, --with-tkconfig=DIRECTORY
Tcl/Tk 的安裝檔案 tclConfig.sh 和 tkConfig.sh, 她們裡面包含製作 Tcl 或 Tk 模組介面的配置資訊. Configure 通常會自動在她們的眾所周知的位置找到這些檔案,但是如果你 需要一個不同版本的 Tcl 或 Tk,你也可以宣告可以找到她們的目錄.
--enable-odbc
製作 ODBC 驅動包.
--with-odbcinst=DIRECTORY
宣告 ODBC 期望的odbcinst.ini配置檔案的路徑. 預設是 /usr/local/pgsql/etc 或者你宣告的 --sysconfdir 選項的內容. 安裝程式將會把一個預設的檔案安裝到那裡.
--with-krb4=DIRECTORY, --with-krb5=DIRECTORY
制 作支援Kerberos認證的東西.你可以選擇 Kerberos 版本 4 或 5,但不能同時選兩個. DIRECTORY 引數宣告 Kerberos 安裝的根目錄;預設假設是 /usr/athena 如果相關的標頭檔案和庫檔案不在常用的父目錄,那麼你必須 使用附加的 --with-includes 和 --with-libraries 選項.另一方面,如果所需要的檔案位於一個預設的搜尋目錄, (比如說,/usr/lib), 那你就不用輸入這些引數了.
configure 將在安裝之前檢查所需要的標頭檔案和庫檔案以確信你的 Kerberos安裝是完整的.
--with-krb-srvnam=NAME
Kerberos服務主的名稱. 預設是 “postgres”.通常沒有理由改變這個值.
--with-openssl=DIRECTORY
製作支援 SSL (加密的)聯接的postgres. 這個選項需要安裝 OpenSSL 包. DIRECTORY 引數宣告 OpenSSL 安裝的根目錄;預設時 /usr/local/ssl.
configure 將在安裝之前檢查所需要的標頭檔案和庫檔案以確信你的 OpenSSL 安裝是充分的.
--with-java
製作 JDBC 驅動以及相關的 Java 包. 這個選項要求你先安裝 Ant (當然還要有 JDK). 請參考程式設計師手冊 裡面 JDBC 驅動的文件獲取更多資訊.
--enable-syslog
開啟PostgreSQL 伺服器使用 syslog 日誌系統的功能. (使用這個功能並不意味著你必須用 syslog 做日誌,也不是說 伺服器預設會做這些,而是給你一個在執行時使用這個選專案的可能.)
--enable-debug
把 所有程式和庫以帶有除錯符號的方式編譯. 這意味著你可以通過一個偵錯程式執行程式來分析問題. 這樣做顯著增大了最後安裝的可執行檔案的大小, 並且在非 gcc 的編譯器上,這麼做通常還要關閉編譯器優化, 導致速度的下降.但是,如果有這些符號表的話,就可以極大 幫助定位可能發生問題的位置.目前,我們認為這個選項對於 生產用途而言是邊際變數,但是如果你正在進行開發工作,或者正在使用 beta 版本, 那麼你就應該開啟它.
--enable-cassert
開啟在伺服器中的 assertion 檢查, 它會檢查許多“不可能發生”的條件.它對於程式碼開發的用途 而言是無價之寶,不過這些測試稍微地減慢了一些速度. 這些斷言檢查並不一定都是針對嚴重錯誤的,因此一些相對無害的 小蟲子也可能導致 postmaster 重啟--只要它觸發了一次斷言失敗. 目前,我們不推薦在生產環境中使用這個選項,但是如果你在做開發 或者在使用 beta 版本的時候應該開啟它.
如果你喜歡用那些和 configure 找出來的不同的 編譯器,那麼你可以分別設定你的環境變數 CC 和 CXX,把它們設定為你選擇的程式. 類似地,你可以用 CFLAGS 和 CXXFLAGS 變數覆蓋預設編譯器標誌.比如:
env CC=/opt/bin/gcc CFLAGS='-02 -pipe' ./configure