Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

200
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

0

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

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda