有没有一种简单的方法可以从Android.mk
文件中为 Android NDK 工具链的汇编程序定义一个符号?
我的目标是能够构建一个由多个 .C 和 .s(汇编程序)文件组成的本机库,这些文件针对 ARMV6 或 ARMV7A EABIS 进行编译和调整,只需修改应用程序上的 APP_ABI 值即可驱动所有必需的条件编译.mk 文件。
首先,我成功地使用了ifeq()
可用的指令Android.mk
来查询 APP_ABI 值的值,然后有条件地执行构建脚本的不同部分。
然后我尝试使用这个功能来有条件地注入一个符号(通过-D),如下所示:
# Compilation Flags
ifeq ($(TARGET_ARCH_ABI),armeabi)
LOCAL_CFLAGS += -DTARGET_ARMEABI -marm -mtune='arm1136jf-s' -ffast-math -O3 -march=armv6 -fvisibility=hidden
else
#armeabi-v7a
LOCAL_CFLAGS += -marm -ffast-math -O3 -march=armv7-a -fvisibility=hidden
endif
C 源代码文件找到正确定义的 TARGET_ARMEABI 符号,但汇编程序文件没有。 (我需要这样做以便根据架构定义适当的 EABI 属性)。这是我尝试在汇编语言文件中有条件地定义 EABI 属性的示例:
.ifdef TARGET_ARMEABI
.arch armv6
.fpu softvfp
.eabi_attribute 23, 1
.eabi_attribute 24, 1
.eabi_attribute 25, 1
.eabi_attribute 26, 2
.eabi_attribute 30, 2
.eabi_attribute 18, 4
.else
.arch armv7-a
.eabi_attribute 27, 3
.fpu vfp
.eabi_attribute 23, 1
.eabi_attribute 24, 1
.eabi_attribute 25, 1
.eabi_attribute 26, 2
.eabi_attribute 30, 2
.eabi_attribute 18, 4
.endif
非常感谢任何指针或建议。