おそらく非常に簡単な質問:
プログラムを64ビットとしてコンパイルする必要があります(32ビットとしてコンパイルするために作成された以前のメイクファイル)。
ファイルをコンパイルするたびに、コマンドラインパラメータに-m32オプションが表示されるのを見ました。そのため、メイクファイルを変更してOPTFLAGの-m32を削除しましたが、プログラムのコンパイル時に-m32が表示され、バイナリが32ビットのままであることを確認しています。このm32は他の場所からも来ていますか?
-m32
はmakefileのどこかからしか来られないため、追跡(再帰grepを使用)して削除する必要があります。
-m64を強制できる場合、「選択したCPUはx86-64命令セットをサポートしていません」と表示されます。 uname -aはx86_64を提供します
そのエラーは、メイクファイルに-march=i686
のようなオプションが存在することを意味します。これは64ビットコンパイルには有効ではありません。それを削除してみてください。
削除できない場合は(もっと頑張ってください!)、コマンドラインで-march=x86-64
を追加すると、汎用の64ビットCPUタイプが指定されます。
ビルドしようとしているソフトウェアがautotoolsベースの場合、これはトリックを実行するはずです。
./configure "CFLAGS=-m64" "CXXFLAGS=-m64" "LDFLAGS=-m64" && make
または、単なるMakefileの場合:
env CFLAGS=-m64 CXXFLAGS=-m64 LDFLAGS=-m64 make
Cmakeを使用している場合、これによりm64コンパイルオプションを追加できます。
add_compile_options(-m64)