Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

556
Views
La reubicación R_X86_64_32S contra '_Py_NotImplementedStruct' no se puede usar al crear un objeto compartido; recompilar con -fPIC

Estoy tratando de instalar la biblioteca dlib Python. En algunos sistemas (macOS, stock Ubuntu 14.04) pip install dlib funciona bien, pero en Ubuntu 14.x que es parte de nuestro entorno CircleCI falla con el siguiente error.

 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!

¿Qué podría estar mal?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

El problema era que Python debe compilarse con el indicador --enable-shared para que la instalación de dlib se realice correctamente. Mientras que en algunos casos el sistema Python está construido con esta bandera (por ejemplo, en Ubuntu), el que estábamos usando en el entorno de CI se instaló a través pyenv , que no lo configura de manera predeterminada.

La solución fue reinstalar Python proporcionado por pyenv con el indicador establecido de esta manera:

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

Para asegurarse de que esto se use: machine: python: version: 2.7.11 # Has to match the pyenv-installed version

over 4 years ago · Santiago Trujillo Report

0

Tuve un problema similar al construir matplotlib (una dependencia para scikit-image ) para aws lambda python 3.6 dentro del contenedor docker de amazon amazon-linux-python-3.6 .

En resumen, matplotlib estaba dando el mismo error que OP tenía para /usr/lib/libpython3.6m.a . Resultó que había dos bibliotecas de este tipo en el contenedor docker de Amazon:

 find / -name "libpython3.6m.a" /usr/lib/libpython3.6m.a /usr/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6m.a

Así que cambié el nombre de /usr/lib/libpython3.6m.a a otra cosa para que matplotlib no lo use y elija la segunda opción:

enter code here mv /usr/lib/libpython3.6m.a /usr/lib/libpython3.6m.a.moved

Después de este cambio, scikit-image tuvo éxito usando pip3 install --no-binary scikit-image scikit-image .

over 4 years ago · Santiago Trujillo Report

0

Como FYI, mi caso particular se resolvió cambiando el nombre de '/usr/local/lib/libpython2.7.a' a '/usr/local/lib/libpython2.7.a.moved'. De acuerdo con la salida 'yum whatprovides /usr/local/lib/libpython2.7.a', esto no se instaló como parte de ningún paquete instalado a través de yum. Quitar esto del camino en este caso, resolvió mi problema.

Aquí estaba mi mensaje de error original:

 /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: error al agregar símbolos: valor incorrecto recopilar2: error: ld devolvió 1 estado de salida

Dado que ninguno de mis paquetes instalados representaba .a lib, moverlo a un lado era una opción para mí.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!