GCCの代わりにIntelのコンパイラで完全なLinuxシステムをコンパイルすることは可能ですか?


26

互換性の問題があるのでしょうか?

Intelベースのシステムでは、IntelコンパイラがGCCよりも優れた仕事をする可能性があるという印象があります。おそらく、これを試みたディストリビューションがすでにあるのでしょうか?

Gentooを使用すると、これは非常に簡単だと思います。


4
ここに、私が前に見つけたはずの良い情報があります! gentoo-wiki.info/HOWTO_ICC_and_Portage
barrymac

5
私はあなたの前提について疑問に思う必要があります:どのコンパイラが「より良い仕事」をするかをどのように評価しますか?より高速なコード実行?より小さいバイナリ?コンパイル時間を短縮しますか?
イーライ酔わ

1
最初に高速なコードで、次に小さなバイナリで評価しますが、非常に劇的でない限り、バイナリサイズについてはあまり気にしません。おそらく別の懸念はエネルギー効率かもしれません
-barrymac

回答:


29

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

Gentooは、ソフトウェアを通常とは異なる方法で再コンパイルしたい場合の最善の策です。Gentoo wikiiccページは主なハードルを説明しています

最初に基本的な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}"

13

確かに興味深い経験になるでしょう。ただし、代替コンパイラを使用してLinuxディストリビューション全体を再コンパイルすることは、実際には簡単ではありません。多くの必須パッケージは、GCCおよびその他のGNUツールチェーンユーティリティに依存しています。

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

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

最終的には(デスクトップを構築していると仮定して)、多くのソースディストリビューションユーザーが最終的に決定するものが真実であることがわかると思います。それはそれを行うべきではないということではありません-それは非常に楽しいかもしれません。あなたがそれをするなら、このサイトは答えを見つけて、あなたの努力を文書化する絶好の場所でしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.