
Recentemente, conversei com um amigo que é um engenheiro de software altamente qualificado e ele me mostrou alguns artigos descrevendo o fato de que a libc era muito melhor que a glibc.
Eu me pergunto se é possível usar libc e que tipo de problemas eu enfrentaria se seguisse esse caminho?
Responder1
Contexto: assumindo a partir dos comentários acima que libc
se trata de um BSDish.
Eu acho que foi investigado, mas libc
tende a estar fortemente vinculado a um determinado kernel ( glibc
tem uma camada de abstração, o que permite alguma portabilidade, mas causa os problemas usuais que uma camada de abstração causa) e fazer o BSD libc
funcionar com um kernel Linux exigiria um reescrita quase completa. os principais serviços do sistema são muito diferentes entre os dois sistemas (um exemplo: o BSD libc
assume que não há pipes/FIFOs, porque o BSD usa pares de soquetes; por outro lado, o Linux não suporta pares de soquetes compatíveis com tubos).
Ir na outra direção (o Debian tem um espaço de usuário experimental do Linux em um kernel do FreeBSD, eu acho) é possível devido à glibc
camada de portabilidade do .
Responder2
Existem muitas implementações de libc. É possível e bastante comum construir um sistema utilizandouClibcouEGLIBC. Não é nem particularmente difícil: tenteRaiz de construção.
Responder3
Muitos softwares dependem de glibc
si mesmos ou de glibc
macroses ou apenas glibc
de estilo, portanto a construção falha. Você pode consertar qualquer software facilmente se souber glibc
por dentro. Por exemplo podemos ver aquicabeçalhos Linuxpara musl
. Os cabeçalhos não estão concluídos, mas você pode verificar os commits e ver como é esse trabalho.
Cada desenvolvedor testa seu software usando glibc
um sistema baseado. Não é possível consertar todo o desenvolvimento de software ativo e torná-lo compatível com outros libc
usando a solução correta, como pull request. Portanto, sistemas de uso geral como gentoo
não podem ser construídos usando libc alternativo sem sofrimento infinito.
Os desenvolvedores incorporados ( openwrt
por exemplo) estão corrigindo versões de software e fazendo um trabalho pesado em torno disso. Portanto, um sistema embarcado (como openwrt
) só pode fornecer umfonteque pode ser construído com libc alternativo como musl
ou uclibc
.
A única maneira correta e fácil de substituir glibc
por other libc
é implementar um wrapper especial que simule todos glibc
os comportamentos usando other libc
. Não existe tal projeto hoje.