FreeBSDがデフォルトのコンパイラとしてGCCを使用するのはなぜですか?
私は、FreeBSD哲学の中心的な柱はnot任意のGNUソフトウェア、特にGPLコードを使用することであるという印象を受けています。
それでも、GNUとGPLの両方であるGCCは、FreeBSDにバンドルされています。
どうして?
FreeBSD 10 BSDライセンスのClangコンパイラを使用します 32ビットおよび64ビットのIntelx86システムではGCCの代わりに。 FreeBSDがリリースするすべてのCPUプラットフォームでの大規模な切り替えを妨げる唯一のことは、開発者の時間と関心です。
FreeBSD 9については、 リリース間近 この質問が最初に提起されたとき— Clangをデフォルトのコンパイラにすることについて トーク がありましたが、十分な問題がありました。彼らはClangをGCCと一緒に出荷し、GCCをこのリリースのデフォルトのままにすることにしました。
FreeBSDが何年も前に非GPLコンパイラへの移行を試みなかった理由、あるいはおそらく独自のコンパイラを作成しなかった理由については、理由は単純です。それは難しいことです。
学部生のCS学生なら誰でもコンパイラを書くことができます—それはコースの要件でさえあるかもしれません—しかし良いコンパイラを書くのは難しいです。 CやC++のような言語が必要な場合、優れたコンパイラーを作成することはさらに困難です。新しいコンパイラが少なくともアプローチする必要があるという合理的な決定を下すと、タスクはさらに難しくなります。GCCにはいくつかのパフォーマンスと機能があります。その背後にある数十年分の開発。
そのため、GCC4.2は依然としてFreeBSD9のデフォルトコンパイラです。
ちなみに、GCC 3.4、4.4、4.6、4.7、および4.8はFreeBSD 9 Portsツリーにあり、GCCの一部のバージョンは今後何年もPortsに残る可能性があります。そこにはたくさんのソフトウェアパッケージがあり、その多くはFreeBSDポートにあり、GCCでのみビルドされます。
やむを得ない可能性があります。最近まで、BSDライセンスのCコンパイラはおそらく少数であるか、gcc
と同等の機能に近づいていませんでした。
から FreeBSDプロジェクトの目標 :
GNU General Public License(GPL)またはLibrary General Public License(LGPL)に該当するソースツリーのコードには、少なくとも強制アクセスの側ではありますが、わずかに多くの文字列が添付されていますただし、GPLソフトウェアの商用利用ではさらに複雑になる可能性があるため、合理的なオプションである場合は、より緩和されたBSD著作権で提出されたソフトウェアを優先します。