Pregunta

Mi distribución (Arch Linux) recientemente aumentó el mínimo compatible versión del núcleo de Linux por su cadena de herramientas. Estoy compilando una aplicación web que me enlace estática y luego subir a un servidor web, y la versión del núcleo en el servidor web es demasiado viejo para bibliotecas estáticas compilados con las nuevas herramientas. (Me da un fallo de segmentación cuando trato de ejecutar binarios estáticos en el servidor.) ¿Hay una manera de compilar aplicaciones utilizando las herramientas GNU (GCC, binutils, glibc) de tal manera que las características que requieren las nuevas versiones del kernel se quedan fuera?

¿Fue útil?

Solución

Compatibilidad

Glibc se garantiza realmente sólo en una dirección. (Binarios mayores trabajan en sistemas más nuevos; viceversa, no es necesariamente así.)

Para garantizar que los binarios funcionan en sistemas antiguos, compilar la vinculación con una glibc más. La forma más sencilla de hacer esto es encontrar una distribución más viejo, pero yo recomendaría la creación de un " crosstool "o similar compilación cruzada cadena de herramientas dirigidas a un libc diferente a la que utiliza su sistema de acumulación (y esto permite repetible construye a través de los ejércitos, independientemente de lo que el sistema es).

Otros consejos

Gracias. También encontré la opción --enable-kernel para glibc, que permite trabajar con núcleos anteriores.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top