从源代码构建python时如何忽略本地python

时间:2013-06-07 14:47:20

标签: python configure

当我尝试使用以下方法构建自己的Python版本时:

./configure --enable-shared --prefix=/app/vendor/python-dev && make && make install

我在安装过程中看到一些错误:

  

/ usr / bin / ld:/usr/local/lib/libpython2.7.a(abstract.o):搬迁   制作a时,不能使用R_X86_64_32对.`rodata.str1.8'   共享对象;使用-fPIC /usr/local/lib/libpython2.7.a重新编译:   无法读取符号:错误值

当链接器尝试使用/usr/local/lib/libpython2.7.a而不是新编译的库时,问题就开始了。

如何阻止链接器(configure / make)使用系统上安装的python库?

3 个答案:

答案 0 :(得分:13)

setup.py构建目标/usr/local时,这似乎是make脚本在搜索路径中始终包含sharedmods的错误。

你必须手动擦除setup.py,所以......

./configure --enable-shared --prefix=/app/vendor/python-dev

...首先,然后编辑setup.py,找到看起来像这样的第442,443和444行......

if not cross_compiling:
    add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
    add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')

...并将它们评论出来,看起来像这样......

# if not cross_compiling
    # add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
    # add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')

...然后make应该有用。

答案 1 :(得分:5)

我用this script解决了:

if(mBallCollide.intersects(mPlayerCollide))

答案 2 :(得分:0)

我刚将/usr/local/lib/libpython2.7.a移至/ tmp