2012-07-03 5 views
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 것 같다하지만, 어떻게 해결할 수 있습니까?

감사합니다.

답변

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

관련 문제