GCCの代わりにIntelのコンパイラを使用して完全なLinuxシステムをコンパイルできますか?

GCCの代わりにIntelのコンパイラを使用して完全なLinuxシステムをコンパイルできますか?

もし互換性の問題があるのではないでしょうか?

私の考えは、Intelベースのシステムでは、IntelコンパイラがGCCよりも優れた作業を実行できることです。たぶん、すでにこれを試したディストリビューションがありますか?

Gentooを使うと、とても簡単になると思います。

答え1

iccを使用してすべてをコンパイルすることはできません。多くのプログラムは、C言語のGCC拡張を使用しています。しかし、Intelはこれらの拡張の大部分をサポートするために多くの努力を払ってきました。たとえば、最新バージョンのiccはLinuxカーネルをコンパイルできます。

珍しい方法でソフトウェアを再コンパイルしたい場合は、Gentooは本当に最善の選択です。これGentoo Wikiのiccページ主な障壁について説明する。

まず、デフォルトのGentooインストールを実行してから、emerge iccシステムにiccでコンパイルされたバイナリがある限り、iccを削除しないでください。 iccがルートパーティションにインストールされて/optおらず、起動時に使用されたプログラムがiccにコンパイルされている場合は、iccライブラリをルートパーティションにコピーする必要があります。

/etc/portage/bashrc優先コンパイルオプションを設定して宣言してください。Gentoo Wikiさまざまなコンパイラを使用してさまざまなパッケージビルドをサポートするより徹底的なスクリプト(ICCが一部のパッケージを破損するために必要です)。

export OCC="icc" CFLAGS="-O2 -gcc"
export OCXX="icpc" CXXFLAGS="$CFLAGS"
export CC_FOR_BUILD="${OCC}"

答え2

明らかに楽しい経験になります。しかし、代替コンパイラを使用して Linux ディストリビューション全体を再コンパイルするのはそれほど簡単ではありません。多くの重要なソフトウェアパッケージは、GCCや他のGNUツールチェーンユーティリティに依存しています。

混合を生成するためにGCCを必要としないパッケージでは、代替コンパイラを使用できます。 GCCに依存するパッケージをコンパイラでビルドできる他のパッケージに置き換えることが可能かもしれませんが、ほとんどの場合、多くの選択肢はありません。これらの選択肢が使用目的に適しているかどうかを判断する必要があります。

しかし本当の質問はこれである: それは価値があるか。組み込みシステムを構築する場合、代替コンパイラはより小さなバイナリを生成できます。コンピューティングクラスタを構築すると、コードの実行が高速化される可能性があります。デスクトップを構築している場合は、素晴らしい学習体験を得ることができます。

私は最終的に(デスクトップを構築すると仮定すると)多くのソース展開ユーザーが正しい決定を下すと思います。最適化、構築、および再構築にかかる時間は、より高速なコード実行で節約される時間よりもはるかに大きくなります。だからといってはならないという意味ではありません。楽しいかもしれません。もしそうなら、このサイトは答えを見つけて努力を文書化するのに最適な場所です。

関連情報