
Meu programa depende de libstdc++.so.6 que depende de /lib64/libstdc++.so.6.0.19
Mas meu CentOS mais antigo tem libstdc++.so.6 => libstdc++.so.6.0.13
Questões
- Devo verificar a versão do libstdc++.so.6 se for menor que 0,19?
- Como atualizo o libstdc++ para libstdc++.so.6.0.19?
Responder1
libstc++.so.6.0.13
e libstdc++.so.0.19
são compatíveis. Veja omanual da libstdc++. Você não deverá ter problemas para executar seu programa na máquina CentOS.
Em geral, as bibliotecas compartilhadas no Linux devem seguir a seguinte convenção de versão: libfoo.so.X.Y.Z
, onde X
é o número maior e Y
e Z
são os números menores. Quando X
é incrementado, a nova versão é incompatível com a versão antiga. Incrementar Y
significa que uma alteração compatível na ABI é feita. Uma alteração Z
significa que algum bug foi corrigido, mas a interface permanece inalterada. Os binários executáveis contêm referências às bibliotecas compartilhadas que usam, mas essas referências contêm apenas o número principal. A biblioteca real usada é determinada pelo link simbólico da biblioteca na máquina em que o programa é executado, por exemplo:
/usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.25