我遇到了同样的问题:尝试编译 apache 2.2.x,将所有(可能的)模块编译为动态模块而不是静态模块。
即使我使用了配置选项(--enable-mods-shared="list,of,modules"),模块也被编译为静态而不是共享的。更糟糕的是,在尝试与“*.so”文件相关的“httpd -M”或“apachectl configtest”时出现了一些错误,即使它们已在刚刚安装的 httpd.conf 中列出(gmake install)。
我调查了 FreeBSD 端口系统,发现他们的端口确实如我所愿创建了一个包含所有共享模块的 apache2.2.x。我发现这是“配置”选项的问题。
为了解决这个问题,我已经完全按照端口进行了配置,在配置时我首先“禁用”了所有模块(很难找到它们的完整列表但得到了它)在配置中有许多“--disable-MODULE”条目。这是我的工作示例:
"./configure"
"--enable-layout=FreeBSD"
"--with-perl=/usr/local/bin/perl5.12.4"
"--with-expat=/usr/local"
"--with-iconv=/usr/local"
"--with-pcre=/usr/local"
"--disable-authn-file"
"--disable-authn-default"
"--disable-authz-host"
"--disable-authz-groupfile"
"--disable-authz-user"
"--disable-authz-default"
"--disable-auth-basic"
"--disable-charset-lite"
"--disable-include"
"--disable-log-config"
"--disable-env"
"--disable-setenvif"
"--disable-mime"
"--disable-status"
"--disable-autoindex"
"--disable-asis"
"--disable-cgid"
"--disable-cgi"
"--disable-negotiation"
"--disable-dir"
"--disable-imagemap"
"--disable-actions"
"--disable-userdir"
"--disable-alias"
"--disable-filter"
"--disable-substitute"
"--disable-proxy"
"--disable-proxy-connect"
"--disable-proxy-ftp"
"--disable-proxy-http"
"--disable-proxy-ajp"
"--disable-proxy-balancer"
"--disable-proxy-scgi"
"--disable-reqtimeout"
"--enable-so"
"--enable-mods-shared=auth_basic auth_digest authn_file authn_dbm authn_anon authn_default authn_alias authz_host authz_groupfile authz_user authz_dbm authz_owner authz_default cache disk_cache file_cache dav dav_fs actions alias asis autoindex cern_meta cgi charset_lite deflate dir dumpio env expires headers imagemap include info log_config logio mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias filter version reqtimeout ssl"
"--with-dbm=sdbm"
"--with-ssl=/usr"
"--disable-ipv6"
"--with-devrandom"
"--with-mpm=worker"
"--prefix=/usr/local"
"--mandir=/usr/local/man"
"--infodir=/usr/local/info/"
这样,所有 apache2.2.x 模块都被构建为动态而不是静态的。如果您忘记“--disable-XXX”它们而只尝试“--enable-XXX”甚至“--enable-mods-shared=XXX,YYY,ZZZ”,它不起作用。您必须在设置“--enable-mods-shared”配置选项之前禁用它们。