我有一个Android的原生库,有一些文件,其中包括NEON汇编代码。 我继承了这个代码一些其他的编码器,并给我的关于NEON汇编编码知识(或任何组件,对于这个问题)是轻薄的,至少可以这样说。 总之,我注意到以下问题:当我与“NDK-建立NDK_DEBUG = 1”编译,一切都很好。 当我编译为释放,“NDK-建立NDK_DEBUG = 0”,则编译器优化远的汇编代码。 我已经成功通过黑客NDK构建脚本,并分裂我的图书馆为两个,其中一个解放运动在其中的所有装配文件解决问题 - 这LIB我在一个非常哈克的方式将优化设置为“-O0” 。 所以,问题是:我怎么可以指定一个特定的文件的优化级别? 设置APP_OPTIM在Application.mk完成,影响到所有的编译文件。 如此做NDK_DEBUG标志。
编辑:根据Alex的要求,这里的Android.mk我结束了使用,分裂lib放到二:一部分用汇编代码(和-O0),另一部分与普通的C代码(-02):
LOCAL_PATH := $(call my-dir)
# assembly_neon_code_here (neon) module - turn optimization off
include $(CLEAR_VARS)
LOCAL_MODULE := assembly_neon_code_here
LOCAL_SRC_FILES := assembly_neon_code_here.cpp
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
LOCAL_ARM_NEON := true
endif
LOCAL_CFLAGS := -O0
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
include $(BUILD_SHARED_LIBRARY)
# main module
include $(CLEAR_VARS)
LOCAL_MODULE := complete_lib
LOCAL_SRC_FILES := regular_src1.cpp regular_src2.cpp regular_src3.cpp
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
LOCAL_ARM_NEON := true
endif
# allow logcat calls
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog -lz
LOCAL_SHARED_LIBRARIES := assembly_neon_code_here
include $(BUILD_SHARED_LIBRARY)