20

おそらく非常に些細な質問です:

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

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

4

3 に答える 3

23

-m32makefileのどこかからのみ取得できるため、それを追跡して(再帰的なgrepを使用して)削除する必要があります。

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

-march=i686このエラーは、makefilesのように、64ビットコンパイルには無効なオプションがあることを意味します。それも削除してみてください。

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

于 2012-06-18T09:16:47.043 に答える
8

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

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

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

env CFLAGS=-m64 CXXFLAGS=-m64 LDFLAGS=-m64 make
于 2012-06-18T08:16:10.823 に答える
1

cmakeを使用している場合は、次の方法でm64コンパイルオプションを追加できます。

add_compile_options(-m64)
于 2018-07-16T02:48:02.237 に答える