当我尝试使用以下方法构建自己的Python版本时:
./configure --enable-shared --prefix=/app/vendor/python-dev && make && make install
Run Code Online (Sandbox Code Playgroud)
我在安装过程中看到一些错误:
/ usr/bin/ld:/usr/local/lib/libpython2.7.a(abstract.o):在创建共享对象时,不能使用针对`.rodata.str1.8'的重定位R_X86_64_32; 使用-fPIC /usr/local/lib/libpython2.7.a重新编译:无法读取符号:值不正确
当链接器尝试使用/usr/local/lib/libpython2.7.a而不是新编译的库时,问题就开始了.
如何防止链接器(configure/make)使用系统上安装的python库?
Aya*_*Aya 13
这看起来是setup.py脚本的错误特征,/usr/local在make构建目标时始终包括在搜索路径中sharedmods.
你必须手动擦拭setup.py,所以......
./configure --enable-shared --prefix=/app/vendor/python-dev
Run Code Online (Sandbox Code Playgroud)
...首先,然后编辑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')
Run Code Online (Sandbox Code Playgroud)
...并将它们评论出来,看起来像这样......
# 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')
Run Code Online (Sandbox Code Playgroud)
......然后make应该工作.
小智 5
我用这个脚本解决了:
# Python 2.7.6:
wget http://python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz
tar xf Python-2.7.6.tar.xz
cd Python-2.7.6
./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10536 次 |
| 最近记录: |