当我在 mod_wsgi 文件夹中执行“make”时出现此错误
我使用以下命令进行配置
./configure --with-apxs=/usr/local/apache/bin/apxs --with-python=/opt/python27/bin/python
/usr/bin/ld: /opt/python27/lib/libpython2.7.a(node.o): 创建共享对象时无法使用针对“本地符号”的重定位 R_X86_64_32;使用 -fPIC /opt/python27/lib/libpython2.7.a 重新编译:无法读取符号:错误值 collect2:ld 返回 1 退出状态 apxs:错误:命令失败,rc=65536
此链接有解决方案,但我不能完全理解
1)How can i found that i have compiled x32bit or x64 bit version of python
2)I didn't understand about what symbolic link he was talking about
答案1
重要的是使用 --enable-shared 重建 Python。如果您没有这样做,符号链接注释就不相关,甚至不应该应用于最新的 Python/mod_WSGI 版本。
答案2
重新编译 Python
仅使用重新编译 Python--enable-shared
是不够的,因为你会得到加载共享库时出错。
假设您将在中安装 Python 2.7.x /usr/local/bin
,则应使用LDFLAGS
以下选项进行配置:
cd Python-2.7.x
make distclean # For re-compiling only
./configure --enable-shared --prefix=/usr/local LDFLAGS="-Wl,--rpath=/usr/local/lib"
make
sudo make altinstall
(使用altinstall
而不是install
以避免更改系统 Python 和手册页的符号链接。简而言之,install
= altinstall
+ bininstall
+ maninstall
)
编译mod_wsgi
假设安装了 Apache(的编译版本)/usr/local/apache
,则mod_wsgi
针对 Python 2.7 进行编译如下:
cd mod_wsgi-x.x.x
./configure LDFLAGS="-Wl,--rpath -Wl,/usr/local/lib" --with-apxs=/usr/local/apache/bin/apxs --with-python=/usr/local/bin/python2.7
make
sudo make install
如果你mod_wsgi
不使用进行编译LDFLAGS
,Apache 将会抱怨:
Cannot load /usr/local/apache/modules/mod_wsgi.so into server: libpython2.7.so.1.0: cannot open shared object file: No such file or directory