在 CentOS 中使用 Python2.7 安装 mod_wsgi 时出错

在 CentOS 中使用 Python2.7 安装 mod_wsgi 时出错

当我在 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

相关内容