Existe uma distribuição Linux compilada com clang / llvm?


11

Existe uma distribuição Linux compilada com clang / llvm ? Parece que no final de 2010 o kernel estava funcionando. Caso contrário, seria mais provável que fosse um problema técnico ou de licenciamento?


Não conheço nenhum que seja. Eu acho que a maioria das distribuições Linux usa GCC, suportando software com licenças comuns e uma criada especificamente para lidar com o código GNU. Atualmente, Clang está sendo adotado pela comunidade BSD por razões semelhantes. (O processo é uma enorme simplificação dos problemas políticos e técnicos)
Chris S

4
Para obter mais informações sobre este post relacionado: É possível compilar um sistema Linux completo com o compilador da Intel em vez do GCC?
Caleb

3
@ James Por favor, não edite a resposta na pergunta; você pode postar uma resposta real abaixo e marcá-la como aceita . Além disso, se você se registrar no SF você deve levar automaticamente a propriedade da questão aqui
Michael Mrozek

Respostas:


8

A situação com o Debian

Como resposta tardia a esta pergunta, o que o @jmtd disse é exatamente o que acontece periodicamente no arquivo Debian.

Os pacotes são recompilados com novas cadeias de ferramentas (compiladores, vinculadores etc.) e, quando a recompilação falha, os bugs dos pacotes que não foram compilados são arquivados com a indicação do FTBFS ("falha ao compilar a partir do código-fonte").

Esses erros geralmente são uma indicação de algo ruim acontecendo e geralmente são classificados com alta gravidade e recebem o status de erros de "liberação crítica", o que significa que uma nova versão não pode ser feita com esses erros não resolvidos.

Em particular, Lucas Nussbaum vem recompilando todo o arquivo do Projeto Debian em uma grade como meio de alguma Avaliação de Qualidade.

Recentemente, porém, Sylvestre Ledru e alguns outros desenvolvedores Debian têm orientou os alunos em Summer of Code of 2012 do Google para permitir a substituição de ambos GCC por Clang e libstdc++(biblioteca de suporte do GCC para C ++) pelo libc++(homólogo do Clang / LLVM).

Existe um site onde os resultados da compilação de toda a coleção de pacotes Debian foram publicados e outros relatórios foram documentados pelo LWN e o programa para desacoplar o processo de compilação Debian do GCC foi concluído com sucesso .

Portanto, em breve poderemos ver uma amostra do Debian compilada com o clang / llvm, dependendo de quanto suporte esses resultados bem-sucedidos possam obter.

O recém-chegado

Existe, a partir desta atualização (16/08/2016), uma nova versão de uma distribuição tradicional do Linux compilada com clang e llvm, o OpenMandriva Lx 3.0 , agora em sua versão final. De acordo com suas anotações, ele é compilado, tanto quanto possível, não apenas com clang e llvm, mas também com altos níveis de otimização "regulares" e também com LTO (Otimização de Tempo de Link) .

LTO

Embora o assunto principal da pergunta e desta resposta seja llvm / clang, para ser justo, deve-se notar que o GCC também apresenta LTO (mais informações sobre LTO ).

Em teoria, o LTO, como visto em clang / llvm e GCC mais recentes, tem o potencial de tornar não apenas os binários resultantes mais rápidos, mas também ter requisitos de memória menores para a seção de texto dos programas (e o kernel do Linux é um potencial beneficiador) do LTO ).

Não li o quanto o OpenMandriva Lx 3.0 usa o LTO em todos os programas, mas estou animado por usar clang / llvm + LTO e adoraria ver pessoas fazendo vários benchmarks independentes comparando e contrastando o GCC "regular", distribuições não otimizadas para LTO para o OpenMandriva Lx 3.0.


@AleksandrDubinsky, obrigado por me agradecer, mas eu estou apenas fazendo o que eu adoraria ter em SE em geral. É frustrante encontrar uma pergunta / resposta que cheira a pó puro (sempre que o problema não é transitório, é claro).
Rbrito 7/10

5

Ainda não. De acordo com este relatório de erro atualmente aberto , parece que até o próprio kernel falha ao compilar.


O relatório de erros contém uma entrada no final que vincula o projeto LLVM Linux por Bryce Lelback. Bryce é a mesma pessoa que iniciou o tópico de discussão de outubro de 2010 Clang constrói um Kernel Linux em funcionamento (inicializa o RL5 com SMP, redes e X, hosts próprios). Esse thread é a fonte da citação "kernel estava funcionando" na minha pergunta. Vou ficar de olho no projeto lll.

@ James Mais um lembrete desde que você mencionou a aceitação: se você se registrar no SF com o mesmo OpenID que você usou aqui, poderá aceitar uma resposta aqui
Michael Mrozek

2

Enquanto os binários do usuário final não são construídos com o clang / llvm, a maior parte do arquivo Debian foi construído (e reconstruído) com o clang / llvm (e binutils-gold e outros bits e partes) por pessoas que desejam expor bugs de portabilidade. o conjunto de software (e os próprios compiladores).


Os binários de usuário final não fazem parte do repositório Debian?
tshepang

1
Sim, e esses são criados com o gcc. Separadamente dos binários do usuário final, os pacotes de origem são reconstruídos como parte de vários processos de integração contínua, alguns dos quais usam cadeias de ferramentas alternativas do compilador / vinculador / libc.
jmtd

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.