web-dev-qa-db-ja.com

64ビットマシンでC ++プログラムを64ビットとしてコンパイルする方法

おそらく非常に簡単な質問:

プログラムを64ビットとしてコンパイルする必要があります(32ビットとしてコンパイルするために作成された以前のメイクファイル)。

ファイルをコンパイルするたびに、コマンドラインパラメータに-m32オプションが表示されるのを見ました。そのため、メイクファイルを変更してOPTFLAGの-m32を削除しましたが、プログラムのコンパイル時に-m32が表示され、バイナリが32ビットのままであることを確認しています。このm32は他の場所からも来ていますか?

15
xyz

-m32はmakefileのどこかからしか来られないため、追跡(再帰grepを使用)して削除する必要があります。

-m64を強制できる場合、「選択したCPUはx86-64命令セットをサポートしていません」と表示されます。 uname -aはx86_64を提供します

そのエラーは、メイクファイルに-march=i686のようなオプションが存在することを意味します。これは64ビットコンパイルには有効ではありません。それを削除してみてください。

削除できない場合は(もっと頑張ってください!)、コマンドラインで-march=x86-64を追加すると、汎用の64ビットCPUタイプが指定されます。

18
Jonathan Wakely

ビルドしようとしているソフトウェアがautotoolsベースの場合、これはトリックを実行するはずです。

./configure "CFLAGS=-m64" "CXXFLAGS=-m64" "LDFLAGS=-m64" && make

または、単なるMakefileの場合:

env CFLAGS=-m64 CXXFLAGS=-m64 LDFLAGS=-m64 make
5

Cmakeを使用している場合、これによりm64コンパイルオプションを追加できます。

add_compile_options(-m64)
0
Jayhello