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,但我該如何解決?
謝謝!
感謝您的答覆,但它仍然不工作。 'APP_ABI:=所有 APP_OPTIM =釋放 NDKDEBUG = 0' 是我Application.mk文件的MD5不會改變... – AStupidNoob
怪異。請注意,緊接在編譯器命令中的-O3之後,會出現「-O2 -DNDEBUG -g」,這幾乎肯定會覆蓋您嘗試的內容。 – Turix
剛剛查看了ndk-build腳本以及它調用的內容。我懷疑你的情況是你正在比較的兩個二進制文件都是*發佈版本(而不是都是調試版本)。特別注意'add-application.mk'(在build/core目錄中)。我在上面指出的'-O2'位被添加在那裏。它們被添加到LOCAL_C_FLAGS之後的命令行中,因此它們將優先於您在此處指定的任何「-O#」。 – Turix