configure腳本配置Apache的源代碼樹并且将其安裝到指定的平台上。豐富的選項允許你根據自己的特定狀況和特定需求對Apache進行定制。
<a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/programs/configure.html#page-header" target="_blank"></a>
<a>文法</a>
你必須在源代碼樹的根目錄下調用configure腳本,文法如下:
./configure [OPTION]... [VAR=VALUE]...
<a>選項</a>
<a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/programs/configure.html#configurationoptions" target="_blank">配置選項</a>
<a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/programs/configure.html#installationdirectories" target="_blank">安裝目錄</a>
<a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/programs/configure.html#systemtypes" target="_blank">系統類型</a>
<a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/programs/configure.html#modoptions" target="_blank">子產品選項</a>
<a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/programs/configure.html#otheroptfeat" target="_blank">雜項選項</a>
<a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/programs/configure.html#aproptfeat" target="_blank">傳遞給apr-config腳本的選項</a>
<a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/programs/configure.html#packages" target="_blank">特殊程式包選項</a>
<a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/programs/configure.html#supportopt" target="_blank">支援程式選項</a>
<a>配置選項</a>
下列選項會影響configure腳本自身的行為。方括号"[]"内是預設值。
這些選項控制着安裝目錄的結構。安裝目錄的結構取決于所選擇的布局。方括号"[]"内是預設值。
--prefix=PREFIX體系無關檔案的頂級安裝目錄PREFIX ,也就Apache的安裝目錄。[/usr/local/apache2] --exec-prefix=EPREFIX體系相關檔案的頂級安裝目錄EPREFIX ,把體系相關的檔案安裝到不同的位置可以友善地在不同主機之間共享體系相關的檔案。[PREFIX]
預設情況下,make install 将會把所有檔案分别安裝到/usr/local/apache2/bin , /usr/local/apache2/lib 目錄下。可以用 --prefix 指定一個不同于/usr/local/apache2的安裝字首,比如:--prefix=$HOME 。
可以使用下面的選項微調安裝目錄。下列選項的預設值由autoconf自動設定并在方括号"[]"内說明。
[EPREFIX/bin] --datadir=DIRWeb伺服器隻讀的體系無關資料目錄DIR 。雖然autoconf提供了該選項,但Apache并未使用它。
[PREFIX/share] --includedir=DIRApache的C頭檔案目錄DIR 。
[EPREFIX/include] --infodir=DIR資訊文檔目錄DIR 。雖然autoconf提供了該選項,但Apache并未使用它。
[PREFIX/info] --libdir=DIR對象代碼庫目錄DIR 。
[EPREFIX/lib] --libexecdir=DIR程式可執行目錄DIR ,也就是動态加載子產品目錄。
[EPREFIX/libexec] --localstatedir=DIR可寫的單一機器資料目錄DIR 。雖然autoconf提供了該選項,但Apache并未使用它。
[PREFIX/var] --mandir=DIR手冊文檔目錄DIR 。
[EPREFIX/man] --oldincludedir=DIR非gcc的C頭檔案目錄DIR 。雖然autoconf提供了該選項,但Apache并未使用它。
[EPREFIX/sbin] --sharedstatedir=DIR可寫的體系無關資料目錄DIR 。雖然autoconf提供了該選項,但Apache并未使用它。
[PREFIX/com] --sysconfdir=DIR隻讀的單一機器資料目錄DIR ,用于存放httpd.conf和mime.types之類的伺服器配置檔案。
這些選項用于交叉編譯在其他平台上運作的Apache HTTP伺服器。在同一平台上編譯和運作Apache HTTP伺服器通常不需要使用這些選項,腳本會自動檢測并設定。方括号"[]"内是預設值。
--build=BUILD指定編譯工具所在系統的系統類型BUILD 。
[config.guess腳本的檢測結果] --host=HOST指定Apache HTTP伺服器将要運作的目标系統類型HOST 。
[BUILD] --target=TARGETconfigure for building compilers for TARGET類型的系統。雖然autoconf提供了該選項,但Apache并未使用它。
有兩種使用子產品的方法:一是靜态連接配接進核心,二是作為DSO子產品動态加載;如果編譯中包含任何DSO子產品,則mod_so會被自動包含進核心。如果希望核心能夠裝載DSO,但不實際編譯任何DSO子產品,則需明确指定"--enable-so=static"。
<a>一般文法</a>
一般情況下你可以使用如下文法啟用或者禁用某個子產品:
--disable-MODULE禁用MODULE子產品(僅用于基本子產品) --enable-MODULE=shared将MODULE編譯為DSO(可用于所有子產品) --enable-MODULE=static将MODULE靜态連接配接進核心(僅用于擴充和實驗子產品) --enable-mods-shared=MODULE-LIST将MODULE-LIST中的所有子產品都編譯成DSO(可用于所有子產品) --enable-modules=MODULE-LIST将MODULE-LIST靜态連接配接進核心(可用于所有子產品)
上述 MODULE-LIST 可以是:
(1)用引号界定并且用空格分隔的子產品名清單
--enable-mods-shared='headers rewrite dav'
(2)"most"(大多數子產品[遇見錯誤子產品時忽略該子產品而不中斷配置過程])
(3)"all"(所有子產品[遇見錯誤子產品時中斷配置過程并報錯])
--enable-mods-shared=most
基本(B)子產品預設包含,必須明确禁用;擴充(E)/實驗(X)子產品預設不包含,必須明确啟用。
子產品名稱

<a>多路處理子產品(MPM)</a>
有至少兩種方法可以添加第三方子產品,最簡單的方法是作為配置參數提供,文法如下:
--with-module=module-type:module-file[, module-type:module-file]
module-file是子產品的源代碼檔案名,該檔案必須位于Apahe源代碼目錄樹的"modules/module-type"目錄下,如果configure沒有在那裡找到module-file ,則将它看作一個絕對路徑名并嘗試将其複制到"modules/module-type"目錄中,如果"modules/module-type"目錄不存在,configure将建立一個"modules/module-type"目錄并在其中放置一個标準的Makefile.in檔案。這種方法有兩個明顯的缺陷:
子產品的源代碼必須是單一檔案
子產品隻能靜态連接配接進核心,而不能作為DSO子產品
譯者注:下述選項并未出現在官方手冊中,譯者不保證其真實性,僅供有興趣的玩家參考。
這些指令用于定義特殊程式包相關的選項。
--with-gdbm[=path]使用GNU DBM代替SDBM;如果不指定path ,則configure腳本将會在預設路徑上搜尋GNU DBM的包含檔案和庫的位置。如果指定path ,則configure腳本會在path/lib和path/include目錄中搜尋GNU DBM的包含檔案和庫。還可以使用"inc-path:lib-path"的形式分别指定GNU DBM的包含檔案和庫的位置。 --with-ndbm[=path]使用New DBM代替SDBM;如果不指定path ,則configure腳本将會在預設路徑上搜尋New DBM的包含檔案和庫的位置。如果指定path ,則configure腳本會在path/lib和path/include目錄中搜尋New DBM的包含檔案和庫。還可以使用"inc-path:lib-path"的形式分别指定New DBM的包含檔案和庫的位置。 --with-berkeley-db[=path]使用Berkeley DB代替SDBM;如果不指定path ,則configure腳本将會在預設路徑上搜尋Berkeley DB的包含檔案和庫的位置。如果指定path ,則configure腳本會在path/lib和path/include目錄中搜尋Berkeley DB的包含檔案和庫。還可以使用"inc-path:lib-path"的形式分别指定Berkeley DB的包含檔案和庫的位置。 注意
DBM資料庫選項是由APU提供并傳遞給APU配置腳本的。是以如果使用 --with-apr-util 指定一個已安裝的APU來代替,那麼這些選項便無效。你可以同時使用幾種不同的DBM實作,然後使用運作時配置動态選擇其中之一。
<a>環境變量</a>
可以通過指定某些環境變量來修改configure腳本的預設選擇,或者幫助configure腳本找到名字和/或位置不标準的庫和程式。
CCC編譯器 CFLAGSC編譯器的flags CPPC預處理程式 CPPFLAGSC/C++預處理程式flags,比如使用"-Iincludedir"指定一個非标準的頭檔案目錄includedir 。 LDFLAGS連接配接器flags,比如使用"-L-Llibdir"指定一個非标準的庫檔案目錄libdir 。