es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo encontrar qué parte de un binario requiere una versión específica de una dependencia determinada?

Estoy compilando algún código heredado en una plataforma Linux. Cuando intento ejecutarlo, obtengo un error de versión de la biblioteca:

[aardvark@aardvark-burrow /data/users/aardvark/project-source] /data/users/aardvark/project-source/buck-out/gen/arvr/projects/viper/applications/replay/fcv_replay
/data/users/aardvark/project-source/buck-out/gen/arvr/projects/viper/applications/replay/fcv_replay: /lib64/libm.so.6: versión `GLIBC_2.29′ no encontrada (requerida por /data/users/aardvark/project-source/buck-out/gen/arvr/projects/viper/applications/replay/fcv_replay)

En primer lugar, ¿a quién le importa si tengo GLIBC 2.28 en lugar de 2.29 y por qué les importa? ¿Es una bandera de compilación pasada para construir el ejecutable final (fcv_replay), o es una de sus muchas dependencias? ¿Cómo puedo averiguarlo? Básicamente, quiero saber qué buscar dentro de un sistema de construcción grande y complejo que no creé.

Aquí están los resultados de otra consulta:

[aardvark@ /data/users/aardvark/project-source] ldd /data/users/aardvark/project-source/buck-out/gen/arvr/projects/viper/applications/replay/fcv_replay
/data/users/aardvark/project-source/buck-out/gen/arvr/projects/viper/applications/replay/fcv_replay: /lib64/libm.so.6: versión `GLIBC_2.29′ no encontrada (requerida por /data/users/aardvark/project-source/buck-out/gen/arvr/projects/viper/applications/replay/fcv_replay)
linux-vdso.so.1 (0x00007ffe84592000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fe4daefd000)
libm.so.6 => /lib64/libm.so.6 (0x00007fe4dab7b000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fe4da977000)
libc.so.6 => /lib64/libc.so.6 (0x00007fe4da5b2000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe4db11d000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fe4da39a000)

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el ejecutable compilado fcv_replay requiere la versión GLIBC_2.29 de la biblioteca libm.so.6, la cual no está presente en el sistema y, por lo tanto, no puede cargarse. El error puede ocurrir debido a una bandera de compilación pasada para construir el ejecutable final o a una de sus muchas dependencias.

    Para determinar qué dependencia requiere GLIBC_2.29, se puede utilizar el comando ldd. Ejecutar el comando “ldd /data/users/aardvark/project-source/buck-out/gen/arvr/projects/viper/applications/replay/fcv_replay” muestra una lista de todas las dependencias y sus respectivas versiones. En este caso, libm.so.6 requiere GLIBC_2.29, y esa es la razón por la cual fcv_replay falla al ejecutarse.

    Para solucionar el problema, se puede instalar la versión de la biblioteca que se requiere, o compilar el código con una versión inferior de GLIBC, si es posible. Dado que este es un código heredado, la mejor manera de resolver el problema depende de los detalles del proyecto y las necesidades de sus usuarios.

Comments are closed.