2011-11-24 13 views
12

fedora 16にインストールされたgccは、別のCPU、たとえばSPARCでクロスコンパイルできますか? 私は間違っている場合、特定の理解を構築し、私を修正するためにいくつかの専門家が必要です。異なるオペレーティングシステムは、カーネルにアクセスするために使用するシステムコールや、使用するカーネルによって完全に異なります。これは正しいです?異なるカーネルは、基礎となるハードウェアにアクセスするためのさまざまなシステムコールを理解しています。バイナリや実行ファイルやプログラムはシステムコールの束に過ぎません。したがって、すべてのOSには独自の実行可能ファイルがあります。実行可能ファイルは、Linux上で動作しないウィンドウで実行することを意図しています。任意のウインドウの実行可能ファイルのソースコードをクロスコンパイルすることによって、他のOS用の実行可能ファイルを生成することができます。単語PLATFORMはオペレーティングシステムを意味します。 POSIXは、UNIXのようなOSの特定の設計基準です。 私たちは通常、異なるOSに対してクロスコンパイルを行います。しかし、異なるハードウェアでもクロスコンパイルできますか?例えば、OSを搭載していないマイクロコントローラの場合?gccは異なるCPUでクロスコンパイルできますか?

+0

前回クロスコンパイラが必要だったとき、私はこのガイドが役に立ちました:http://linux.bytesex.org/cross-compiler.html – sarnold

+0

@Saurabh:私はクロスコンパイラを入手するための小さなチュートリアルを書いていますSparcを実行し、Qemuエミュレータで実行可能ファイルを実行します。それが役に立つかもしれません。 :https://www.ee.iitb.ac.in/course/~nehak/SparcQemu.html –

答えて

11

いいえ別のアーキテクチャのプログラムファイルのコンパイルにネイティブマシン(x86)gccを使用することはできません。そのためには、そのプロセッサアーキテクチャに固有のクロスコンパイラ-gccが必要です。

OSのシステムコールについてのご理解は正しいです。各OSにはライブラリで使用されている独自のシステムコールがあります。これらのライブラリは、最後にプロセッサ用の機械語に翻訳されます。

各プロセッサアーキテクチャには、命令セットアーキテクチャ(ISA)として知られている独自の命令セットがあります。ですから、高級言語(C言語のような)で書かれたプログラムをコンパイルするときは、ISAから機械語に変換する必要があります。この仕事はコンパイラ(gcc)によって行われます。コンパイラは、1つのプロセッサアーキテクチャに限定されます。たとえば、gccはx86プロセッサ用です。ですからx86マシンで異なるプロセッサ用のコンパイラが必要な場合は、そのプロセッサのクロスコンパイラを実行する必要があります。

2

このようなバージョンを作成する必要があります。これは、新しいプラットフォームにgccを移植するプロセスの一部です。クロスコンパイルしたバージョンをビルドし、そのバージョンをクロスコンパイルした後、新しいプラットフォームでそのバージョンをテストし、デバッグ、リンス、リピートします。

+0

私はintelマシン上にgcc-SPARC版しかビルドできないと言っていますか?しかし、SPARC上でのみ実行してテストできますか? – KawaiKx

+0

@Saurabhいいえ、私はまったくそのことを言っているわけではありません。私が言ったことを正確に言うことを意味します。インテルでSPARCのクロスコンパイラを構築し、インテルで実行し、コンパイルに使用してSPARCで結果を実行することができます。 – EJP

+0

o.k ..私は、インテルマシン上の別のCPU用のコンパイラをビルド、インストール、実行することができます。唯一のキャッチは、出力が実行され、ターゲットCPU上でテストすることができます。これはかなり論理的です..あなたの時間と忍耐のおかげで.. – KawaiKx

関連する問題