在制作共享对象时,不能使用针对'_Py_NotImplementedStruct'的重定位R_X86_64_32S; 用-fPIC重新编译

dom*_*kck 11 python dlib

我正在尝试安装dlibPython库.在某些系统(macOS,股票Ubuntu 14.04)pip install dlib工作正常,但在我们的CircleCI环境的Ubuntu 14.x中,它失败并出现以下错误.

Linking CXX shared library dlib.so
   /usr/bin/ld: /opt/circleci/python/2.7.11/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
   error: cmake build failed!
Run Code Online (Sandbox Code Playgroud)

可能有什么不对?

dom*_*kck 16

问题是Python需要使用--enable-shared标志进行编译dlib才能成功安装.虽然在某些情况下系统Python是使用此标志构建的(例如在Ubuntu上),但我们在CI环境中使用的那个是安装的pyenv,默认情况下不会设置它.

解决方案是重新安装提供的pyenvPython,标志设置如下:

PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install --force 2.7.11

为了确保使用它: machine: python: version: 2.7.11 # Has to match the pyenv-installed version