10

我希望从源代码编译 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。有编译时解决方案吗?谢谢。

4

1 回答 1

24

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

./configure --enable-shared --prefix=/opt/python \
            LDFLAGS=-Wl,-rpath=/opt/python/lib
于 2012-09-23T14:44:03.583 回答