2010-05-04 21 views
8

Estoy intentando construir un paquete binario que se pueda ejecutar en múltiples distribuciones de Linux. En la actualidad es construido en Ubuntu 10.04, pero falla en Ubuntu 8.04 con el siguiente error:¿Cuál es la mejor forma de crear un software que no requiera el glibc más nuevo?

./test: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./test) 
./test: /usr/lib/libstdc.so.6: version `GLIBC_2.11' not found (required by ./test) 

¿Cuál es la mejor forma de resolver este problema? ¿Hay alguna forma de instalar un glibc antiguo en un nuevo cuadro y compilarlo, o tengo que construir en una distribución anterior? Y si compilo contra un viejo glibc, ¿funcionará en un nuevo glibc?

O, como alternativa, ¿hay algunos indicadores o paquetes del compilador que podría instalar para resolver el problema?

Respuesta

5

La mejor solución que he encontrado es instalar una máquina virtual que ejecute Debian estable, y basarse en eso. Debian stable es lo suficientemente viejo como para que cualquier paquete creado con él se ejecute en cualquier otra distribución basada en Debian como Ubuntu. Es posible que tenga que solucionar los errores no críticos que se han solucionado en versiones posteriores de varios programas pero que no se han transferido a Debian estable.

+0

Supongo que esto significa que basarse en una versión antigua de glibc seguirá funcionando bien en las versiones más nuevas de glibc? – ZorbaTHut

+0

Hasta donde yo sé, sí ... déjame decirlo de esta manera, todavía no ha salido mal. ;-) – ptomato

1

Si realmente desea asegurarse de que se ejecuta en cada distribución reciente, también puede considerar la vinculación estática con una libC que seleccione. Sin embargo, puede tener problemas si utiliza funciones que solo son proporcionadas por núcleos más nuevos (por ejemplo, llamadas al sistema más recientes, por ejemplo).

Cuestiones relacionadas