Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

194
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

0

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

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda