我正在尝试在CentOS服务器上编译mod_wsgi(版本3.3),Python 2.6,但在virtualenv
下,没有成功。我收到了错误:
的/ usr /斌/ LD: /home/python26/lib/libpython2.6.a(node.o): 重新定位R_X86_64_32对`a 当地符号'不能用于 制作共享对象;重新编译 -fPIC
/home/python26/lib/libpython2.6.a: 无法读取符号:错误值
根据mod_wsgi Installation Issues docs,可能是 libpython2.6.a 文件:
嗯,该文件位于正确的位置,并且可读。我尝试使用--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位 - 如果有人有任何确认方式,我会很感激。
我尝试使用with和without --python = / home /[...]/ python2.6配置mod_wsgi Makefile,两种方式都爆炸了。
我也尝试使用Python 2.4编译virtualenv
的外的mod_wsgi ,它运行正常。不幸的是,如果我要使用virtualenv
,那对我没有帮助:)
任何人都知道如何在virtualenv
下编译mod_wsgi?
答案 0 :(得分:8)
文档的相关部分是:
这提到了-fPIC问题。
和
当mod_wsgi找不到共享库时,需要使用LD_RUN_PATH。
可以找到有关共享库问题的其他信息以及mod_wsgi在以下位置找到错误的Python安装的问题:
答案 1 :(得分:3)
如果您已从源代码构建Python,请添加--enable-shared进行配置。 (它添加-fPIC)
答案 2 :(得分:1)
您应该使用libpython2.6.a
重新编译-fPIC
以生成对象。
例如:
gcc -fPIC -g -c -Wall xxx.c