You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Python3.6虚拟环境编译mod_wsgi时遇链接错误求助

这个问题我之前碰到过,根源在于你的Python 3.6是静态编译生成的(产出了libpython3.6m.a静态库),而mod_wsgi编译Apache共享模块时,必须依赖动态链接的Python库——静态库在64位系统下无法满足重定位要求,所以才会抛出R_X86_64_32S这类错误。

下面是一步步的解决方法:

解决步骤

1. 重新编译Python 3.6以生成动态链接库

首先得把Python 3.6重新编译一遍,开启动态库支持:

  • 如果你没有Python 3.6的源码包,先下载对应版本的源码并解压;如果已经有源码,直接进入源码目录。
  • 执行配置命令,注意必须加上--enable-shared参数,同时通过LDFLAGS指定动态库的运行时路径,避免后续找不到库:
./configure --enable-shared LDFLAGS="-Wl,-rpath=/usr/local/lib" --prefix=/usr/local/python3.6

这里的--prefix可以根据你的实际需求调整,只要是你想安装Python的路径就行。

  • 接下来编译并安装:
make && sudo make install

2. 重建Python虚拟环境

之前的虚拟环境依赖的是旧的静态编译Python,所以需要重新创建djangodev虚拟环境:

# 先删除旧环境(如果需要保留环境里的依赖,可以先导出requirements.txt备份)
rm -rf /home/fgthct/.virtualenv/djangodev
# 用新编译的Python创建虚拟环境
/usr/local/python3.6/bin/python -m venv /home/fgthct/.virtualenv/djangodev
# 激活环境
source /home/fgthct/.virtualenv/djangodev/bin/activate

3. 重新编译mod_wsgi

回到mod_wsgi的源码目录,先清理之前的编译残留,再重新配置编译:

# 清理旧的配置和编译文件
make clean && ./configure --with-python=/home/fgthct/.virtualenv/djangodev/bin/python
# 编译并安装
make && sudo make install

额外提示

  • 确保你使用的mod_wsgi版本支持Python 3.6,建议用4.5.15及以上的版本,旧版本可能存在兼容性问题。
  • 重新编译Python后,可以检查/usr/local/lib下是否有libpython3.6m.so这个动态库,如果系统找不到它,执行sudo ldconfig刷新一下库缓存就行。

内容的提问来源于stack exchange,提问作者fgthct

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:09:47