gpt4 book ai didi

android - 在 Android.mk 中为程序集 (.s) 源文件定义一个符号?

转载 作者:行者123 更新时间:2023-11-29 21:41:18 25 4
gpt4 key购买 nike

有没有一种简单的方法可以从 Android.mk 文件中为 Android NDK 工具链的汇编器定义符号?

我的目标是能够构建一个由多个 .C 和 .s(汇编程序)文件组成的本地库,这些文件针对 ARMV6 或 ARMV7A EABIS 进行了编译和调优,并通过简单地修改 APP_ABI 值来驱动所有必需的条件编译在 Application.mk 文件上。

首先,我成功地使用了 Android.mk 中可用的 ifeq() 指令来查询 APP_ABI 值的值,然后有条件地执行构建脚本的不同部分.

然后我尝试使用此功能来有条件地注入(inject)符号(通过 -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

非常感谢任何指点或建议。

最佳答案

汇编文件需要以大写S结尾(.S.sx)才能被gcc预处理。参见 GCC doc, 3.2 Options Controlling the Kind of Output关于那个。

我相信你可以从 Bionic 作弊 sources ,例如来自 libc/arch-arm/bionic/memcpy.S .

关于android - 在 Android.mk 中为程序集 (.s) 源文件定义一个符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17034898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com