我试图在 CentOS 服务器上编译 mod_wsgi(版本 3.3),Python 2.6 - 但在 virtualenv
下,没有成功。我收到错误:
/usr/bin/ld: /home/python26/lib/libpython2.6.a(node.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/home/python26/lib/libpython2.6.a: could not read symbols: Bad value
根据mod_wsgi Installation Issues docs ,可能是 libpython2.6.a 文件:
- 没有
- 不是用共享生成的
- 是为 32 位机器而不是 64 位机器生成的。
好吧,文件在正确的位置,并且可读。我尝试使用--enable-shared
选项重新编译 Python 2.6,但是整个编译失败了,几乎每个文件都给出了相同的错误,libpython2 .6.a 被冲走了。
我不知道 Python 是为 64 位编译的,但是当我运行它时,确实:
import platform
print platform.platform()
>>>Linux-2.6.18-028stab070.4-x86_64-with-redhat-5.6-Final
由于 Python 认为它在 x86_64 上,我希望它是为 64 位编译的 - 如果有人有任何方式确认这一点,我将不胜感激。
我尝试使用和不使用 --python=/home/[...]/python2.6 配置 mod_wsgi Makefile,两种方式都失败了。
我还尝试使用 Python 2.4 在 virtualenv
的 外部 编译 mod_wsgi,它运行良好。不幸的是,如果我要使用 virtualenv
:)
有谁知道如何让 mod_wsgi 在 virtualenv
下编译?
最佳答案
文档的相关部分是:
这提到了 -fPIC 问题。
和:
这提到当 mod_wsgi 找不到共享库时需要使用 LD_RUN_PATH。
可以在以下位置找到有关共享库问题以及 mod_wsgi 查找错误 Python 安装问题的其他信息:
关于python - 在 virtualenv 中编译 mod_wsgi 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6116985/