
Mi programa depende de libstdc++.so.6, que depende de /lib64/libstdc++.so.6.0.19
Pero mi CentOS anterior tiene libstdc++.so.6 => libstdc++.so.6.0.13
Preguntas
- ¿Debo comprobar la versión de libstdc++.so.6 si es inferior a 0,19?
- ¿Cómo actualizo libstdc++ a libstdc++.so.6.0.19?
Respuesta1
libstc++.so.6.0.13
y libstdc++.so.0.19
son compatibles. Ver elmanual libstdc++. No debería tener problemas para ejecutar su programa en la máquina CentOS.
En general, las bibliotecas compartidas en Linux deben seguir la siguiente convención de control de versiones: libfoo.so.X.Y.Z
, donde X
es el número mayor y Y
y Z
son números menores. Cuando X
se incrementa, la nueva versión es incompatible con la versión anterior. Incrementar Y
significa que se realiza un cambio compatible en el ABI. Un cambio Z
significa que se ha solucionado algún error, pero la interfaz no ha cambiado. Los binarios ejecutables contienen referencias a las bibliotecas compartidas que utilizan, pero estas referencias sólo contienen el número principal. La biblioteca real utilizada está determinada por el enlace simbólico de la biblioteca en la máquina en la que se ejecuta el programa, por ejemplo:
/usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.25