2012-07-03 30 views
1

我试图让我的Android.mk文件,以优化的二进制文件:变化Android.mk不改变库

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := fred 
LOCAL_SRC_FILES := fred.c 
LOCAL_LDLIBS := -llog 
LOCAL_CFLAGS = -O3 
NDKDEBUG = 0 

include $(BUILD_SHARED_LIBRARY) 

然后我保存此,并运行

$NDK/ndk-build -B V=1 

然后我在生成的库上运行md5sum,并且它与内建的没有区别

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := fred 
LOCAL_SRC_FILES := fred.c 
LOCAL_LDLIBS := -llog 

include $(BUILD_SHARED_LIBRARY) 

那么,我在做什么错?

编译器的输出似乎是:

/home/AStupidNoob/Documents/Android/android-ndk-r7b/toolchains/arm-linux-androideabi- 
4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc -MMD -MP -MF /home/AStupidNoob 
/workspace/Fred/obj/local/armeabi/objs/fred/fred.o.d -fpic -ffunction-sections -funwind- 
tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ 
-D__ARM_ARCH_5TE__ -Wno-psabi -march=armv5te -mtune=xscale -msoft-float -mthumb -Os 
-fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -I/home/AStupidNoob 
/workspace/Fred/jni -DANDROID -O3 -Wa,--noexecstack -O2 -DNDEBUG -g -I/home/AStupidNoob 
/Documents/Android/android-ndk-r7b/platforms/android-4/arch-arm/usr/include -c 
/home/AStupidNoob/workspace/Fred/jni/fred.c -o /home/AStupidNoob/workspace/Fred/obj 
/local/armeabi/objs/fred/fred.o 

我不知道这是否是好的,但似乎这个问题也许是3的优化参数,-Os -O2 -O3,但我该如何解决?

谢谢!

回答

2

窥视APP_OPTIM变量。我在我的Application.mk文件中将我的地址设置为release以获得优化代码。 (我不知道如果你能得到你正在寻找各种-O#选择这样的粒度,但至少你得到的东西。)

+0

感谢您的答复,但它仍然不工作。 'APP_ABI:=所有 APP_OPTIM =释放 NDKDEBUG = 0' 是我Application.mk文件的MD5不会改变... – AStupidNoob

+1

怪异。请注意,紧接在编译器命令中的-O3之后,会出现“-O2 -DNDEBUG -g”,这几乎肯定会覆盖您尝试的内容。 – Turix

+1

刚刚查看了ndk-build脚本以及它调用的内容。我怀疑你的情况是你正在比较的两个二进制文件都是*发布版本(而不是都是调试版本)。特别注意'add-application.mk'(在build/core目录中)。我在上面指出的'-O2'位被添加在那里。它们被添加到LOCAL_C_FLAGS之后的命令行中,因此它们将优先于您在此处指定的任何“-O#”。 – Turix