Después de instalar una nueva máquina de construcción, descubrí que venía con 6.0.10 de la ++ biblioteca estándar CEnlace con una versión anterior de libstdC++
-rw-r--r-- 1 root root 1019216 2009-01-02 12:15 libstdc++.so.6.0.10
Muchos de nuestros equipos de destino, sin embargo, todavía utilizar un mayor versión de libstdC++, por ejemplo:
-rwxr-xr-x 1 root root 985888 Aug 19 21:14 libstdc++.so.6.0.8
al parecer, el ABI cambió en los dos últimos 0.0.1 de, como tratando de ejecutar un programa de resultados en
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found
Intenté instalar explícitamente una versión anterior de gcc pero eso no ayudó. La actualización de las máquinas de destino está fuera de mi control, por lo que no es una opción. ¿Cuál es la mejor manera de hacer que mis compilaciones funcionen en máquinas con una libstdC++ anterior?
He buscado en apt-cache para versiones anteriores de libstdC++ para instalar, pero aparentemente no hay versiones anteriores de 6 disponibles?
¿Quiere decir que tenemos que instalar una versión anterior de g ++? –
@Peter Sí, tome una versión anterior de g ++ que enlaza con la versión anterior de libstdC++. Así que – Jan
Creo que es bastante cojo que para usar una versión anterior de la biblioteca C++ tenga que vivir con un compilador que potencialmente tenga errores y optimizaciones que faltan, especialmente porque a la inversa (usando un compilador antiguo con una nueva versión de biblioteca) parece que solo se trata de establecer 'LD_LIBRARY_PATH'. –