Si compilo un programa C++ en mi máquina y lo ejecuto en otro (con un software anterior) obtengo: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found
.GLIBCXX versiones
De hecho en mi glibc sistema es más reciente (Tengo gcc-libs 4.5.1: libstdC++ so.6.0.14.) Y strings /usr/lib/libstdc++.so.6 | grep GLIBCXX
impresiones de GLIBCXX_3.4
a GLIBCXX_3.4.14
. En el otro sistema, en cambio, solo se imprime hasta GLIBCXX_3.4.8
(obtuve libstdC++. So.6.0.8).
así que tengo un par de preguntas:
Por qué mi enlazador enlaza los binarios C++ contra libstdC++ versión
GLIBCXX_3.4.9
en lugar deGLIBCXX_3.4.14
?Si cumplí mi código binario contra libstdC++ versión
GLIBCXX_3.4
supongo que se ejecutará casi en todas partes. ¿Eso implicaría algún tipo de problema? (Por ejemplo: habría que utilizar más edad -y por lo tanto peor, las implementaciones del algoritmo?)Si en lugar de eso estáticamente vinculo mi programa en contra de mi libstdC++ supongo que se ejecutará en todas partes; el binario será mucho más grande (~ 1MB) por supuesto, cualquier otro pros/contras?
¿Puedo forzar al enlazador a vincular mi binario con una versión determinada de libstdC++?
Debería utilizar 'objdump' para inspeccionar la biblioteca, no' cadenas'. –