在linux安装依赖于python包时,报错libpython.a: conld not read symbols

事件:

我在百度github上下载了Familia相似度计算的开源项目,在liniux服务器上编译的过程中出现libpython.a无法读取符号的错误,错误发生项目编译时生成动态库fimilia.so的过程中。

错误代码:

libpython3.6m.a(abstract.o): 
relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; 
recompile with -fPIC. 
/usr/local/lib/libpython3.6m.a: could not read symbols: Bad value.

解决:

网上各种搜索后,找到错误原因。原来是python在编译的时候没有执行 -fPIC命令,于是参考文献2重新编译python;

终端进入到python源码所在文件夹,终端中输入命令:

cd 源码目录
./configure --prefix=/usr/local --enable-shared CFLAGS=-fPIC
make
make install

重新编译之后发现还是报同样的错误;
又参考文献1;
删除了源码object文件夹下所有的 静态文件,
即.o文件;
依然报错;
这时观察最后错误信息,
查看libpython.o所在的文件夹后发现,
该文件夹中的libpytho是老版本的,
直接删掉,
什么都不改;
再次编译项目,
成功!!!
解决问题真幸福,
晚饭都忘了吃。

  1. 删除.o文件
  2. python编译

你可能感兴趣的:(错误集锦)