おそらく非常に些細な質問です:
プログラムを64ビットとしてコンパイルする必要があります(32ビットとしてコンパイルするために作成された以前のmakefile)。
ファイルをコンパイルするたびに、コマンドラインパラメーターにオプション-m32が表示されるのを見ました。そこで、OPTFLAGで-m32を削除するようにmakefileを変更しましたが、プログラムをコンパイルすると、-m32が表示され、バイナリは32ビットのままです。このm32は他の場所からも来ていますか?
おそらく非常に些細な質問です:
プログラムを64ビットとしてコンパイルする必要があります(32ビットとしてコンパイルするために作成された以前のmakefile)。
ファイルをコンパイルするたびに、コマンドラインパラメーターにオプション-m32が表示されるのを見ました。そこで、OPTFLAGで-m32を削除するようにmakefileを変更しましたが、プログラムをコンパイルすると、-m32が表示され、バイナリは32ビットのままです。このm32は他の場所からも来ていますか?
-m32
makefileのどこかからのみ取得できるため、それを追跡して(再帰的なgrepを使用して)削除する必要があります。
-m64を強制できると、「選択したCPUはx86-64命令セットをサポートしていません」というメッセージが表示されます。手がかりはありますか?uname-aはx86_64を提供します
-march=i686
このエラーは、makefilesのように、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)