Mac OS X 10.11.6编译mod_wsgi-4.6.4报错:C编译器无法生成可执行文件
从你提供的config.log内容来看,核心错误是这一行:
clang: error: unknown argument: '-Qunused-argumentssource'
这明显是编译命令的参数拼接错误——原本应该是-Qunused-arguments和source两个独立的部分,结果被错误地连在了一起,导致clang无法识别这个奇怪的参数。这个问题大概率和环境变量里的编译参数格式,或者apxs传递给configure的参数异常有关。
下面是针对性的解决方案,按优先级尝试:
1. 清空可能有问题的编译环境变量
先检查当前的CFLAGS和CPPFLAGS环境变量是否包含格式错误的参数:
echo $CFLAGS echo $CPPFLAGS
如果输出里有奇怪的拼接、未闭合的引号或者多余的字符,先临时清空它们再重新运行configure:
export CFLAGS="" export CPPFLAGS="" ./configure
或者直接在configure命令前临时覆盖这些变量:
CFLAGS="" CPPFLAGS="" ./configure
2. 显式指定编译器并传递正确参数
Mac OS X里的gcc其实是clang的别名,我们可以直接指定clang作为编译器,同时手动传递正确的参数避免拼接错误:
./configure CC=clang CFLAGS="-Qunused-arguments"
如果你的Python环境不是系统默认路径,还需要加上--with-python参数指定Python位置,比如:
./configure CC=clang CFLAGS="-Qunused-arguments" --with-python=/usr/bin/python
3. 检查并修正apxs的编译参数
apxs(Apache扩展工具)可能会传递错误的编译参数给configure,先查看apxs默认的CFLAGS:
/usr/sbin/apxs -q CFLAGS
如果输出里有格式错误的内容,在configure时显式覆盖apxs的CFLAGS:
./configure APXS_CFLAGS="-Qunused-arguments"
4. 尝试用pip安装(源码安装的替代方案)
如果源码编译的问题一直无法解决,可以尝试用pip直接安装mod_wsgi,这种方式会自动处理编译参数的问题:
pip install mod_wsgi==4.6.4
安装完成后,可以用以下命令快速验证是否正常:
mod_wsgi-express start-server
如果能正常启动服务器,说明安装成功,之后再配置到你的Apache环境即可。
额外验证步骤
为了确认编译器本身没有问题,可以手动编译一个简单的测试文件:
// 新建conftest.c #include <stdio.h> int main() { printf("Hello World\n"); return 0; }
然后用clang编译:
clang conftest.c -o conftest ./conftest
如果能正常输出Hello World,说明clang本身是正常工作的,问题确实出在configure的参数拼接上。
内容的提问来源于stack exchange,提问作者Sitalk

