64ビットアーチをターゲットにしたときにプログラムをクロスコンパイルする必要がありますか?ホストはx86シリーズの32ビットアーチですか?

64ビットアーチをターゲットにしたときにプログラムをクロスコンパイルする必要がありますか?ホストはx86シリーズの32ビットアーチですか?

私のホストは
:x86 32ビットプロセッサ私の
目標は:x86 64ビットプロセッサ

質問がいくつかあります:

  • 私は利用可能なgccを使用してホスト上のプログラムを簡単にコンパイルし、ターゲットで実行できるかどうか疑問に思います。
  • x86 64ビットプロセッサ用にクロスコンパイルする必要がありますか?それでは、コンパイル時にどのように指定しますか?
  • プログラムをクロスコンパイルするには別のツールチェーンを使用する必要がありますか?

ベストアンサー1

すべてのamd64(つまり64ビットx64)プロセッサは32ビットx86バイナリを実行できます。さらに、ほとんどのオペレーティングシステムでは、amd64オペレーティングシステムでx86プログラムを実行できます。したがって、x86バイナリは通常amd64プロセッサに配布できます。

あなたがそうする意思があるかどうかは別の問題です。 64ビットオペレーティングシステムには通常、32ビットライブラリの制限セットが付属しているため、プログラムが珍しいライブラリを使用している場合は、64ビット実行可能ファイルをインストールする方が簡単です。アプリケーションによっては、32ビットまたは64ビットバイナリのパフォーマンス上の利点がある場合とない場合があります。

64ビット実行可能ファイルをデプロイすることにした場合は、x86アーキテクチャで実行されるamd64(つまりx86_64)アーキテクチャ用のクロスコンパイル環境が必要です。これは、リンクするコンパイラと静的ライブラリを意味します。

gccインストールはフロントエンドを共有し、複数のバックエンドを含めることができます。しかし、x86プラットフォームではamd64開発ツールに付属しているディストリビューションはあまりありません。リンクするライブラリにも同様です(もちろん、コンパイラがあればソースから再コンパイルできます)。

たとえば、x86のUbuntu 10.04では、gccおよびamd64バックエンドの「multilib」バージョン、および小さな64ビット開発パッケージセット(libc6-dev-amd64 libc6-dev-amd64 http://bit.ly/software-smallのインストールと依存関係と依存パッケージ)。

おすすめ記事