fedora 16にインストールされたgccは、別のCPU、たとえばSPARCでクロスコンパイルできますか? 私は間違っている場合、特定の理解を構築し、私を修正するためにいくつかの専門家が必要です。異なるオペレーティングシステムは、カーネルにアクセスするために使用するシステムコールや、使用するカーネルによって完全に異なります。これは正しいです?異なるカーネルは、基礎となるハードウェアにアクセスするためのさまざまなシステムコールを理解しています。バイナリや実行ファイルやプログラムはシステムコールの束に過ぎません。したがって、すべてのOSには独自の実行可能ファイルがあります。実行可能ファイルは、Linux上で動作しないウィンドウで実行することを意図しています。任意のウインドウの実行可能ファイルのソースコードをクロスコンパイルすることによって、他のOS用の実行可能ファイルを生成することができます。単語PLATFORMはオペレーティングシステムを意味します。 POSIXは、UNIXのようなOSの特定の設計基準です。 私たちは通常、異なるOSに対してクロスコンパイルを行います。しかし、異なるハードウェアでもクロスコンパイルできますか?例えば、OSを搭載していないマイクロコントローラの場合?gccは異なるCPUでクロスコンパイルできますか?
答えて
いいえ別のアーキテクチャのプログラムファイルのコンパイルにネイティブマシン(x86)gccを使用することはできません。そのためには、そのプロセッサアーキテクチャに固有のクロスコンパイラ-gccが必要です。
OSのシステムコールについてのご理解は正しいです。各OSにはライブラリで使用されている独自のシステムコールがあります。これらのライブラリは、最後にプロセッサ用の機械語に翻訳されます。
各プロセッサアーキテクチャには、命令セットアーキテクチャ(ISA)として知られている独自の命令セットがあります。ですから、高級言語(C言語のような)で書かれたプログラムをコンパイルするときは、ISAから機械語に変換する必要があります。この仕事はコンパイラ(gcc)によって行われます。コンパイラは、1つのプロセッサアーキテクチャに限定されます。たとえば、gccはx86プロセッサ用です。ですからx86マシンで異なるプロセッサ用のコンパイラが必要な場合は、そのプロセッサのクロスコンパイラを実行する必要があります。
このようなバージョンを作成する必要があります。これは、新しいプラットフォームにgcc
を移植するプロセスの一部です。クロスコンパイルしたバージョンをビルドし、そのバージョンをクロスコンパイルした後、新しいプラットフォームでそのバージョンをテストし、デバッグ、リンス、リピートします。
私はintelマシン上にgcc-SPARC版しかビルドできないと言っていますか?しかし、SPARC上でのみ実行してテストできますか? – KawaiKx
@Saurabhいいえ、私はまったくそのことを言っているわけではありません。私が言ったことを正確に言うことを意味します。インテルでSPARCのクロスコンパイラを構築し、インテルで実行し、コンパイルに使用してSPARCで結果を実行することができます。 – EJP
o.k ..私は、インテルマシン上の別のCPU用のコンパイラをビルド、インストール、実行することができます。唯一のキャッチは、出力が実行され、ターゲットCPU上でテストすることができます。これはかなり論理的です..あなたの時間と忍耐のおかげで.. – KawaiKx
- 1. gccライブラリをmingwでクロスコンパイルするには?
- 2. は、arm-linux-androideabi-gccとは異なるarm-eabi-gccです
- 3. gccはクロスコンパイルなしでアームのバイナリを生成することができます
- 4. 異なる演算子でCPU使用量が異なりますか?
- 5. 異なるCPUで異なる動作をするX64命令
- 6. なぜCPUとGPUで結果が異なるのですか?
- 7. なぜ64bit CPUでsizeof()が異なるのですか?
- 8. コンパイラはどのようにして異なるOSやアーキテクチャにクロスコンパイルできますか?
- 9. gRPCを使用したgolangプロトコルバッファをクロスコンパイルして、異なるOSプラットフォームで使用できますか?
- 10. Freetype2をクロスコンパイルできました。今は何ですか?
- 11. クロスコンパイルとは何ですか?
- 12. CMakeの2つの異なるコンパイラでのクロスコンパイルが、同じソース
- 13. GCCを使って* nixからWindowsにクロスコンパイルすると、VC++でまだサポートされていない機能が使用できますか?
- 14. gccでクロスコンパイルしたLLVMアセンブリを最適化するにはどうすればよいですか?
- 15. gccのバージョンが異なる単純なCプログラムのアセンブリコードが異なるのはなぜですか?
- 16. Android 2.3 SDKは以前のバージョンとクロスコンパイルできますか?
- 17. NTPをARMにクロスコンパイルできない
- 18. MonoをARM用にクロスコンパイルできない
- 19. gccとldの異なるバージョンを混在させることはできますか?
- 20. WSサーバーでCPU使用が異常になっています
- 21. Linuxカーネル構築時にgcc-7がクロスコンパイルで動作しません
- 22. GCCが設定したターゲットCPUを検出しますか?
- 23. ARMv7にクロスコンパイルできません
- 24. ARMのValgrindをクロスコンパイルできません
- 25. arm-linux-gccのクロスコンパイルgmockの使い方は?
- 26. どのcpuがgccの-mtune = genericでターゲットにされていますか?
- 27. 同じアプリケーションで異なるgcc最適化レベルのファイルをコンパイルできますか?
- 28. GCCは-O0と-O2で異なる数値結果を与えます
- 29. C++ GCCこのsfinaeコードはGCC 4.7でコンパイルできますが、4.8ではコンパイルできないのはなぜですか?
- 30. リンク時までgcc-asの.weakreferenceを解決するのを遅らせることはできますか? (GCC)
前回クロスコンパイラが必要だったとき、私はこのガイドが役に立ちました:http://linux.bytesex.org/cross-compiler.html – sarnold
@Saurabh:私はクロスコンパイラを入手するための小さなチュートリアルを書いていますSparcを実行し、Qemuエミュレータで実行可能ファイルを実行します。それが役に立つかもしれません。 :https://www.ee.iitb.ac.in/course/~nehak/SparcQemu.html –