首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建YouCompleteMe时的Libpython错误

构建YouCompleteMe时的Libpython错误
EN

Stack Overflow用户
提问于 2014-04-10 14:19:58
回答 2查看 4.1K关注 0票数 7

我正在构建YouCompleteMe插件的vim,遵循这个文档。当我运行make时,我会得到以下错误。

代码语言:javascript
复制
Linking CXX shared library /home/sagar/.vim/bundle/YouCompleteMe/python/ycm_core.so
/usr/bin/ld: /usr/local/lib/libpython2.7.a(abstract.o): relocation R_X86_64_32S against `_Py_NotImplementedStruct' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libpython2.7.a: could not read symbols: Bad value
collect2: error: ld returned 1 exit status

这个错误是什么?

我已经安装了碧昂夫来管理python版本。会引起问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-14 15:56:05

让链接器指向.so (共享对象)文件,而不是.a (静态库)文件。

可以在运行cmake时指定标志:

代码语言:javascript
复制
cmake -G "Unix Makefiles" -DPYTHON_LIBRARY=/usr/local/lib/libpython2.7.so . ~/.vim/bundle/YouCompleteme/cpp

请注意,即使您正在使用pyenv,YouCompleteMe构建也可能指向不需要的python构建,因为它们现在还没有被正确地自动检测到。

如果您有此问题,可能还应该正确地指定Python头文件:

代码语言:javascript
复制
cmake -G "Unix Makefiles" -DPYTHON_LIBRARY=/usr/local/lib/libpython2.7.so -DPYTHON_INCLUDE_DIR=/usr/local/include/python . ~/.vim/bundle/YouCompleteme/cpp

PS=(我假设您的头在这条路径上,请在前面检查)

票数 7
EN

Stack Overflow用户

发布于 2015-04-23 13:59:26

由于我的系统上的某些路径与可接受的答案( CMake和python )不同,所以我为上面的问题发布了另一种解决方案:

  1. 确保拥有一个共享库版本的libpython2.7.so $找到libpython /usr/lib/x86_64-linux-gnu/libpython2.7.so.1
  2. 或者从CMake期望的位置创建一个指向它的符号链接 sudo ln -s "/usr/lib/x86_64-linux-gnu/libpython2.7.so.1“/usr/lib/libpython2.7.so” 或者,正如用YCM的构建脚本代码编写的那样,您可以添加额外的CMake选项,以确保正确找到.so库。 导出EXTRA_CMAKE_ARGS="-DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7.so.1“
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22990769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档