我被要求为我们的产品评估 Android 平台,我正在寻找各种选项,我只是刚刚触及表面,困扰我的一件事是我看不到如何将代码编译为直接 ARM 代码(没有 Thumb),我知道 Thumb 运行速度较慢,我们需要代码关键部分的性能。
我认为它应该只是在文件中设置-march
标志,但我无法让它工作......LOCAL_CFLAGS
Android.mk
任何人都可以帮忙吗?
我被要求为我们的产品评估 Android 平台,我正在寻找各种选项,我只是刚刚触及表面,困扰我的一件事是我看不到如何将代码编译为直接 ARM 代码(没有 Thumb),我知道 Thumb 运行速度较慢,我们需要代码关键部分的性能。
我认为它应该只是在文件中设置-march
标志,但我无法让它工作......LOCAL_CFLAGS
Android.mk
任何人都可以帮忙吗?
您可以在 ARM、Thumb 或两者的混合中构建。
LOCAL_SRC_FILES
在您要列出的 makefile 中MyFile.c
,指定MyFile.c.arm
(不要重命名磁盘上的文件,只需在源文件列表中进行)。此约定在整个 Android 中用于对性能至关重要的代码(或出于某种原因只需要 ARM)。
当然,通常的注释适用:Thumb 代码往往需要更多指令来完成某事,但每条指令的大小只有一半,因此代码通常会慢一些,但也会小一些。在某些情况下,较小的尺寸可以更好地适应 ARM CPU 中的(微小)缓存,并且实际上可能更快。
为模块指定以下标志Android.mk
将直接编译 ARM 代码。
LOCAL_ARM_MODE := arm
启用优化也可能有帮助:
LOCAL_CFLAGS := -O3