I have been asked to evaluate the Android platform for our product and I am looking at various options, I am only just scratching the surface just now and the one thing that is bothering me is that I cannot see how to compile code as straight ARM code (no Thumb), I know that Thumb runs slower and we will need the performance in key sections of our code.
I think it should just be setti开发者_运维问答ng the -march
flag in the LOCAL_CFLAGS
of the Android.mk
file, but I cannot get that to work...
Can anyone help?
Specifying the following flag for a module in Android.mk
will compile straight ARM code.
LOCAL_ARM_MODE := arm
Enabling optimization may also help:
LOCAL_CFLAGS := -O3
You can build in ARM, Thumb, or a mix of the two.
In the makefile, in LOCAL_SRC_FILES
, where you would list MyFile.c
, specify MyFile.c.arm
(do not rename the file on disk, just do it in the list of source files). This convention is used throughout Android for code that is performance-critical (or just needs to be ARM for some reason).
The usual notes apply, of course: Thumb code tends to require more instructions to accomplish something, but each instruction is half the size, so the code is usually a bit slower but also a fair bit smaller. In some situations the smaller size allows a better fit with the (tiny) caches in the ARM CPUs, and could actually be faster.
精彩评论