GCCランタイムライブラリの例外、またはClangがまだOpenMPサポートを欠いている理由

クローズドソースプロジェクトでGCCを使用していますか? OpenMPを使用していますか? すべてのOpenMPプログラムがリンクされいるlibgompライブラリがGPLv3の条件の下で配布されていることを知ってますか? とても親切に、ソースを開いてください...



幸いなことに、缶ビール以外は何も開ける必要はありません。 実際、libstdc ++やlibgompなどのGCCランタイムキットにはGPLライセンスがありますが、 GCCランタイムライブラリには特別な例外があります 。 FAQにリストされているライブラリを商用アプリケーションで使用できますが、注意が必要です。GPL互換コンパイラ(GCCを含む)でのみコンパイルする必要があります。 言い換えれば、プロプライエタリなコンパイラでコンパイルされたlibgompとのリンクはGPLに違反しています。



Clang / LLVMにはGPLと互換性のあるBSDのようなライセンスがありますが、libgompを実装すると自動的にGPLにアップグレードされ、クローズドフォーク(大企業がこのテクノロジースタックを非常に気に入っている)の作成が防止されます。 GPLに関する条項のために、ClangにはまだOpenMPがありません 。そのようなサポートを追加すると、ランタイムをゼロから作成することになるからです。 しかし、この状況では、Intelは大騒ぎし、BSDライセンスの下でOpenMP実装のソースコードを時間内にオープンし、Clangライセンスと互換性があり、 ほぼLLVMにOpenMPサポートを追加しました 。 残念ながら、たとえば、Intel OpenMPはその全期間にわたってx86(-64)で動作しており、ARMでどのように動作しているかは不明です。



また、Clang / LLVMのGCCライブラリの例外のため、自分でlibstdc ++(別名libc ++)とlibgcov(別名llvm-cov-テストによるコードカバレッジを分析するツール)を最初から作成する必要がありました。



可能性は低いとはいえ、この例外を解消する心構えは価値があります。 GCCはすでにGPLv2からGPLv3に切り替えていました。その結果、Appleは公式コンパイラをClangに変更し、主な開発者Chris Luttnerのスタッフを引き継いで積極的に改善し始めました。 例外のテキストは、これは必要な手段であると述べています。なぜなら、「禁止は私たち自身にマイナスの結果をもたらす可能性が高いからです。GCCの使用を制限するために小さなライブラリが使用された場合、犬。」 おそらく、Appleの後のすべての大企業がCCCとGCCを交換すると、結果はそれほど否定的ではなくなります...



All Articles