g++は64ビットシステムで64ビットを構築しますか?

g++は64ビットシステムで64ビットを構築しますか?

ターゲットシステムに特定のフラグを指定せずにautomakeを使用してライブラリをビルドすると、ビルドが実行されるシステムによって結果が変わりますか?これは、64ビットオペレーティングシステムのコンパイラは64ビット結果を生成し、32ビットオペレーティングシステムのコンパイラは32ビット結果を生成することを意味します。 (私はFedora 16とg ++コンパイラを使用しています)

答え1

この動作を変更するフラグがない限り、バイナリ出力は実行中のアーキテクチャと同じであると仮定します。したがって、何かをコンパイルし、バイナリでファイルコマンドを実行してそれを確認できます。 64ビットか32ビットかを教えてくれます。

答え2

はい、特に指定がない限り、GCCはプロセッサアーキテクチャに合わせてコンパイルします。 (特定のCPUバリアントではなく、一般的なアーキテクチャ - あなたの場合amd64、別名x86_64)。

64ビットGCCの一般的なインストールでは、対応する-m3232ビットアーキテクチャ(amd64システムのx86など)のコンパイルが渡されます。gcc --print-multi-libどのアーキテクチャがサポートされているかを確認するには、実行してください。

答え3

特定のプロジェクトに32ビット専用ライブラリへの明示的または暗黙的な依存関係がない場合、automake64ビット実行可能ファイルはコンパイルされます。

64ビットシステムが豊富で32ビットしか利用できなかった機能が再実装されているため、最新のシステム(Fedora 16を含む2010年以降)ではこれは発生しません。

関連情報