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

191
Views
¿Cómo puedo vincular a una versión anterior de una biblioteca compartida?

Estoy construyendo mi programa en mi computadora, en el cual libtiff.so -> libtiff.so.5 . Y luego empujando las compilaciones en otra máquina en la que libtiff.so -> libtiff.so.4 .

En tiempo de ejecución, mi programa existe: «error al cargar bibliotecas compartidas: libtiff.so.5 : no se puede abrir el archivo de objeto compartido: no existe tal archivo o directorio».

No puedo actualizar la otra máquina y me gustaría evitar compilar en una máquina virtual (con la misma versión de Linux que la máquina ejecutora). Por lo tanto, me gustaría obligar al compilador a usar libtiff.so.4 en lugar de libtiff.so.5 .

Tengo libtiff.so.4 instalado en mi computadora (así como libtiff.so.5 ). ¿Cómo puedo forzar el enlace con esta versión en lugar de la versión más nueva? Pensé en mover libtiff.so -> libtiff.so.4 , pero tengo miedo de romper mi sistema si necesita la última versión ( apt-get purge libtiff5 da un error porque algún otro paquete lo necesita).

¿Es posible vincular con una versión anterior (instalada) de una biblioteca? Si es así, ¿cómo? ¿Y es dañino cambiar el enlace simbólico de libtiff.so a la versión anterior? Si no, ¿resolverá mi problema?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Puede usar esta sintaxis para vincular a una versión específica de una biblioteca:

gcc [otras opciones] -l:libtiff.so.4

No necesita especificar una ruta; se buscan los directorios habituales para encontrar la biblioteca.

Nota: como mencionó Michael Wild, debe tener instalados los archivos de encabezado para esa versión en lugar de los más nuevos.

over 4 years ago · Santiago Trujillo Report

0

Como han mencionado otros, puede forzar el enlazador especificando el nombre completo de la versión, o incluso la ruta absoluta.

Sin embargo, recomendaría encarecidamente no hacerlo. El problema es que los encabezados instalados corresponden a la versión más nueva de la biblioteca. Si ha habido cambios que rompieron la API/ABI entre estas versiones de la biblioteca, el programa podría funcionar, bloquearse de forma intermitente o, si tiene suerte, no funcionar en absoluto.

En su lugar, debe instalar temporalmente el paquete de desarrollo que corresponde a la biblioteca libtiff.so.4. Si está en Debian/Ubuntu o similar, este sería el paquete libtiff4-dev .

over 4 years ago · Santiago Trujillo Report

0

Especifique la ruta completa al .so: en lugar de -ltiff pase /lib64/libtiff.so.4 al enlazador.

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!