Posso construir uma distribuição Linux com libc em vez de glibc?

Posso construir uma distribuição Linux com libc em vez de glibc?

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 libcse trata de um BSDish.

Eu acho que foi investigado, mas libctende a estar fortemente vinculado a um determinado kernel ( glibctem 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 libcfuncionar 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 libcassume 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 à glibccamada 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 glibcsi mesmos ou de glibcmacroses ou apenas glibcde estilo, portanto a construção falha. Você pode consertar qualquer software facilmente se souber glibcpor 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 glibcum sistema baseado. Não é possível consertar todo o desenvolvimento de software ativo e torná-lo compatível com outros libcusando a solução correta, como pull request. Portanto, sistemas de uso geral como gentoonão podem ser construídos usando libc alternativo sem sofrimento infinito.

Os desenvolvedores incorporados ( openwrtpor 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 muslou uclibc.

A única maneira correta e fácil de substituir glibcpor other libcé implementar um wrapper especial que simule todos glibcos comportamentos usando other libc. Não existe tal projeto hoje.

informação relacionada