0

私のコードには、コンパイラの最適化に問題があります。私の C++ ファイルの一時的なアセンブリ コードを確認したいと思います。android.mk ファイルを設定するには?

私が使用する場合

LOCAL_CFLAGS := -S

コンパイルエラー!そして出力:

f:/codes/eclipse/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld.exe:./obj/local/armeabi-v7a/objs-debug/sunred/SunRedVersion.o: file format not recognized; treating as linker script
f:/codes/eclipse/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld.exe:./obj/local/armeabi-v7a/objs-debug/sunred/SunRedVersion.o:1: syntax error
collect2: ld returned 1 exit status
make: *** [obj/local/armeabi-v7a/libsunred.so] Error 1

アセンブリコードは生成されません。

私が使用する場合

myasmfilter :=  $OBJS_DIR/SunRedVersion.S.original $OBJS_DIR/SunRedVersion.S $OBJS_DIR/SunRedVersion.o

    LOCAL_FILTER_ASM := myasmfilter

それを出す

AsmFilter      : sunred <= SunRedVersion.s

myasmfilter ./obj/local/armeabi-v7a/objs-debug/sunred/SunRedVersion.s ./obj/local/armeabi-v7a/objs-debug/sunred/SunRedVersion.filtered.s
process_begin: CreateProcess(NULL, myasmfilter ./obj/local/armeabi-v7a/objs-debug/sunred/SunRedVersion.s ./obj/local/armeabi-v7a/objs-debug/sunred/SunRedVersion.filtered.s, ...) failed.
make (e=2): 系统找不到指定的文件。(system can't find the file)

make: *** [obj/local/armeabi-v7a/objs-debug/sunred/SunRedVersion.filtered.s] Error 2

アセンブリコードを見つけることができますが、他のファイルは見つかりません。他の cpp ファイルを変更しても、最初の make ファイルのアセンブリ コードが出力されます。

誰かがLOCAL_FILTER_ASM フィルターの書き方を知っていますか? 例を教えてください。

4

1 に答える 1

0

ndk-bulidは、すべてのパラメーターを使用して透過的に makeを実行します。したがって、次のように使用できます。

ndk-build obj/local/armeabi-v7a/objs-debug/sunred/SunRedVersion.o LOCAL_CFLAGS=-S V=1

...調査したいCファイルの場合。または、コマンド ラインで複数のターゲットを指定することもできます。

于 2012-09-29T07:31:09.720 に答える