在已经使用Python 2.7的系统上从源代码编译Python 2.7.3

时间:2012-09-23 14:15:32

标签: python python-2.7 shared-libraries

我希望从源代码编译Python 2.7.3。操作系统是OpenSUSE 11.4 x86_64,已经提供了Python 2.7。我想将2.7.3用于最新的安全补丁,但它是一个共享系统,所以我不能修改系统Python解释器。

我使用./configure --prefix=/opt/python --enable-shared进行编译。没有配置错误,所以我make。再没有错误。我执行make install(我认为我不需要make altinstall,因为/opt/python中的此安装前缀尚未使用)。

当我尝试运行新的二进制文件/opt/python/bin/python时,Python宣布它的版本为2.7,而不是2.7.3。我发现纠正此问题的唯一方法是移动系统的/usr/lib64/libpython2.7.so.1.0,并将其符号链接到/opt/python/lib/python/libpython2.7.so.1.0。这是有效的,Python宣布它是2.7.3,但这打破了系统Python。

无论如何,我可以让两者共存,例如通过让/opt/python使用自己的libpython?除了在运行时提供LD_LIBRARY_PATH。有编译时解决方案吗?感谢。

1 个答案:

答案 0 :(得分:19)

为避免每次启动Python时都必须使用LD_LIBRARY_PATH指定运行时库路径,可以使用-rpath链接器选项在构建时指定它:

./configure --enable-shared --prefix=/opt/python \
            LDFLAGS=-Wl,-rpath=/opt/python/lib