Изменения в 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, но как мне это исправить?
Спасибо!
1 ответ
Решение
Заглянуть в APP_OPTIM
переменная. Я установил мой release
в моем файле Application.mk для оптимизированного кода. (Я не уверен, что вы можете получить гранулярность, которую вы ищете с различными -O#
варианты таким образом, но по крайней мере вы что-то получаете.)