clang / llvmでコンパイルされたLinuxディストリビューションはありますか?2010年末現在、カーネルは機能していたようです。そうでない場合、技術的またはライセンスの問題である可能性が高いでしょうか?
clang / llvmでコンパイルされたLinuxディストリビューションはありますか?2010年末現在、カーネルは機能していたようです。そうでない場合、技術的またはライセンスの問題である可能性が高いでしょうか?
回答:
この質問への遅い回答として、@ jmtdが言ったことは、Debianアーカイブで定期的に行われることです。
パッケージは新しいツールチェーン(コンパイラー、リンカーなど)で再コンパイルされます。再コンパイルが失敗すると、コンパイルに失敗したパッケージに対するバグがFTBFS(「ソースからのビルドに失敗しました」)の表示とともに提出されます。
このようなバグは通常、何か問題が発生していることを示すものであり、通常は重大度が高いランクが付けられ、「リリースクリティカル」なバグのステータスが与えられます。
特に、Lucas Nussbaumは、Debianプロジェクトのアーカイブ全体をグリッドに再コンパイルして、いくつかの品質評価を行っています。
最近、けれども、シルベスタレデューおよび他のいくつかのDebian開発者がいる指導 学生の置換できるように、2012年のGoogleのSummer of Codeでの両方のクランとでGCCをlibstdc++
することによって(C ++用GCCのサポートライブラリ)libc++
(クラン/ LLVMの対応)。
Debianパッケージのコレクション全体のコンパイル結果が公開され、LWNによってさらなるレポートが文書化されたサイトがあり、GCCからDebianビルドプロセスを分離するためのプログラムが正常に終了しました。
したがって、これらの成功した結果がどれだけのサポートを得ることができるかに応じて、clang / llvmでコンパイルされたDebianのフレーバーがすぐに表示される可能性があります。
このアップデート(2016-08-16)の時点で、clangとllvmでコンパイルされた従来のLinuxディストリビューションの新しいバージョンであるOpenMandriva Lx 3.0が現在、最終リリースにあります。そのノートによると、それが打ち鳴らすとLLVMと、だけでなく、「定期的に」高い最適化レベルだけではなく、可能な限り、コンパイルされたとしても、リンク時の最適化(LTO) 。
質問とこの回答の主な主題はllvm / clangですが、公平を期すために、GCCはLTO(LTOに関するより多くの背景)も備えていることに注意してください。
理論的には、LTOは、新しい打ち鳴らす/ LLVMとGCCに見られるように、持っている潜在的な高速化だけでなく、結果のバイナリを作るだけでなく、持つのテキスト・セクションのための小さなメモリ要件をプログラムのを(とLinuxカーネルは、1つの潜在的benefiterですLTOの)。
OpenMandriva Lx 3.0がすべてのプログラムでLTOをどの程度使用しているかはまだ読んでいませんが、clang / llvm + LTOを使用していることに興奮しています。「通常の」GCCベースの複数の独立したベンチマークを比較対照している人を見てみたいです。 OpenMandriva Lx 3.0への非LTO最適化ディストリビューション。
未だに。この現在開いているバグレポートによると、カーネル自体もコンパイルに失敗したようです。
エンドユーザーのバイナリはclang / llvmを使用してビルドされていませんが、ほとんどのDebianアーカイブは、移植性のバグを公開したい人々によってclang / llvm(およびbinutils-goldとその他の部分)を使用してビルド(および再構築)されています。ソフトウェアスイート(およびコンパイラ自体)。
最近、OpenSuse-Tumbleweedのローリングリリースでは、ビルド用にgcc9にLTOを設定します。 http://hubicka.blogspot.com/2019/05/gcc-9-link-time-and-inter-procedural.html