1
변경하지 :변경 내가 바이너리 최적화하기 위해 내 Android.mk 파일을 얻으려고 libs와
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
I을 실행 결과 라이브러리에서 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
나는이 OK이면 모르겠지만,이 문제는 아마도 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