Existe-t-il une distribution Linux compilée avec clang / llvm?


11

Existe-t-il une distribution Linux compilée avec clang / llvm ? Il semble qu'à la fin de 2010, le noyau fonctionnait. Sinon, serait-il plus probable qu'il s'agisse d'un problème technique ou de licence?


Je n'en connais aucun. Je pense que la plupart des distributions Linux utilisent GCC, prenant en charge des logiciels avec des licences communes et un spécialement conçu pour gérer le code GNU. Clang est actuellement adopté par la communauté BSD pour des raisons similaires. (La procédure est une énorme simplification des problèmes politiques et techniques)
Chris S


3
@James Veuillez ne pas modifier la réponse dans la question; vous pouvez poster une réponse réelle ci-dessous et la marquer comme acceptée . De plus, si vous vous inscrivez sur SF, vous devez automatiquement vous approprier la question ici
Michael Mrozek

Réponses:


8

La situation avec Debian

En réponse tardive à cette question, ce que @jmtd a dit est exactement ce qui se produit périodiquement dans l'archive Debian.

Les packages sont recompilés avec des chaînes d'outils plus récentes (compilateurs, éditeurs de liens, etc.) et, lorsque la recompilation échoue, les bogues des packages qui n'ont pas pu être compilés sont classés avec l'indication FTBFS ("échec de la construction à partir de la source").

Ces bogues sont généralement une indication de quelque chose de mauvais qui se produit et sont généralement classés avec une gravité élevée et étant donné le statut de bogues "critiques pour la publication", ce qui signifie qu'une nouvelle version ne peut pas être effectuée avec ces bogues non résolus.

En particulier, Lucas Nussbaum a recompilé l'ensemble des archives du projet Debian dans une grille comme moyen d'évaluation de la qualité.

Récemment, cependant, Sylvestre Ledru et quelques autres développeurs Debian ont servi de mentor aux étudiants dans Google Summer of Code 2012 pour permettre la substitution des deux GCC par Clang et libstdc++(bibliothèque de soutien de GCC pour C ++) par libc++(homologue de Clang / LLVM).

Il y a un site où les résultats de la compilation de toute la collection de paquets Debian ont été publiés et d'autres rapports ont été documentés par LWN et le programme de découplage du processus de construction Debian de GCC a été conclu avec succès .

Donc, nous pourrons bientôt voir une version de Debian compilée avec clang / llvm, selon le niveau de support que ces résultats réussis peuvent gagner.

Le nouveau venu

Il existe, à compter de cette mise à jour (2016-08-16), une nouvelle version d'une distribution Linux traditionnelle compilée avec clang et llvm, OpenMandriva Lx 3.0 , maintenant dans sa version finale. Selon ses notes, il est compilé, autant que possible, non seulement avec clang et llvm, mais aussi avec des niveaux d'optimisation élevés "réguliers" et aussi avec Link Time Optimization (LTO) .

LTO

Bien que le sujet principal de la question et de cette réponse soit llvm / clang, pour être honnête, il convient de noter que GCC propose également LTO (plus d' informations sur LTO ).

En théorie, LTO, comme on le voit dans les nouveaux clang / llvm et GCC, a le potentiel de rendre non seulement les binaires résultants plus rapides, mais aussi d'avoir des besoins en mémoire plus petits pour la section de texte des programmes (et le noyau Linux est un avantage potentiel de LTO ).

Je n'ai pas lu combien OpenMandriva Lx 3.0 utilise LTO dans tous les programmes, mais je suis ravi qu'il utilise clang / llvm + LTO et j'aimerais voir des gens faire plusieurs tests de référence indépendants comparant et contrastant basés sur GCC "réguliers", distributions non optimisées LTO vers OpenMandriva Lx 3.0.


@AleksandrDubinsky, merci de me remercier, mais je fais juste ce que j'aimerais avoir en SE en général. Il est frustrant de trouver une question / réponse qui sent la poussière pure (chaque fois que le problème n'est pas transitoire, bien sûr).
rbrito

5

Pas encore. D'après ce rapport de bogue actuellement ouvert, il semble que même le noyau lui-même ne parvienne pas à se compiler.


Le rapport de bogue contient une entrée à la fin du lien vers le projet LLVM Linux par Bryce Lelback. Bryce est la même personne qui a commencé le fil de discussion d'octobre 2010. Clang construit un noyau Linux fonctionnel (démarrage vers RL5 avec SMP, réseau et X, auto-hôtes). Ce fil est la source de la citation "le noyau fonctionnait" dans ma question. Je garderai un œil sur le projet lll.

@James Un rappel de plus puisque vous avez mentionné l'acceptation: si vous vous inscrivez sur SF avec le même OpenID que vous avez utilisé ici, vous devriez pouvoir accepter une réponse ici
Michael Mrozek

2

Bien que les binaires de l'utilisateur final ne soient pas construits avec clang / llvm, la plupart des archives Debian ont été construites (et reconstruites) avec clang / llvm (et binutils-gold et autres morceaux) par des personnes qui souhaitent exposer des bogues de portabilité dans la suite logicielle (et les compilateurs eux-mêmes).


Les binaires utilisateur final ne font-ils pas partie de l'archive Debian?
tshepang

1
Oui, et ceux-ci sont construits avec gcc. Indépendamment des binaires de l'utilisateur final, les packages source sont reconstruits dans le cadre de plusieurs processus d'intégration continue, dont certains utilisent des chaînes d'outils de compilation / liaison / libc alternatives.
jmtd

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.