
Recientemente tuve una conversación con un amigo que es un ingeniero de software altamente calificado y me mostró algunos artículos que describen el hecho de que libc era mucho mejor que glibc.
Me pregunto si es posible utilizar libc en su lugar y ¿qué tipo de problemas me encontraría si siguiera este camino?
Respuesta1
Contexto: asumiendo por los comentarios anteriores que libc
se refiere a un BSDish.
Creo que se ha investigado, pero libc
tiende a estar estrechamente vinculado a un kernel determinado ( glibc
tiene una capa de abstracción, lo que le permite cierta portabilidad pero causa los problemas habituales que causa una capa de abstracción) y hacer que BSD libc
funcione con un kernel de Linux requeriría un reescritura casi completa. Los servicios clave del sistema son muy diferentes entre los dos sistemas (un ejemplo: BSD libc
supone que no hay tuberías/FIFO, porque BSD usa pares de sockets en su lugar; por el contrario, Linux no admite pares de sockets compatibles con tuberías).
Ir en la otra dirección (creo que Debian tiene un espacio de usuario experimental de Linux en un kernel de FreeBSD) es posible debido a glibc
la capa de portabilidad de .
Respuesta2
Hay muchas implementaciones de libc. Es posible y bastante común construir un sistema usandouClibcoEGLIBC. Ni siquiera es particularmente difícil: inténtaloraíz de compilación.
Respuesta3
Muchos programas dependen de glibc
sí mismos, de glibc
macros o simplemente glibc
del estilo, por lo que la compilación falla. Puedes arreglar cualquier software fácilmente si lo conoces glibc
desde dentro. Por ejemplo podemos ver aquíencabezados de Linuxpara musl
. Los encabezados no están terminados, pero puedes consultar las confirmaciones y ver cómo se ve este trabajo.
Cada desarrollador prueba su software utilizando glibc
un sistema basado. No es posible arreglar todo el desarrollo de software en vivo y hacerlo compatible con otros libc
usando la solución adecuada como la solicitud de extracción. Por lo tanto, los sistemas de propósito general como este gentoo
no se pueden construir utilizando libc alternativo sin un dolor infinito.
Los desarrolladores integrados ( openwrt
por ejemplo) están arreglando versiones de software y trabajando duro para solucionarlo. Entonces, un sistema integrado (como openwrt
) solo puede proporcionar unafuenteque se puede construir con libc alternativa como musl
o uclibc
.
La única forma correcta e indolora de reemplazar glibc
con other libc
es implementar un contenedor especial que simule todos glibc
los comportamientos usando other libc
. Hoy en día no existe tal proyecto.