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 。