ndk生成ARM汇编(附代码)

转自:http://www.cnblogs.com/bingghost/p/5838688.html
使用ndk即可生成arm汇编
1.首先写好hello.c
#include 
int main(int argc, char const *argv[])
{
	int a=1024;
	printf("hello=%d\n", a);
	return 0;
}
2.编写makefile
#ndk根目录
NDK_ROOT=E:/android/ndk/android-ndk-r10b
#编译器根目录
TOOLCHAINS_ROOT=$(NDK_ROOT)/toolchains/arm-linux-androideabi-4.6/prebuilt/windows
#编译器目录
TOOLCHAINS_PREFIX=$(TOOLCHAINS_ROOT)/bin/arm-linux-androideabi
#头文件搜索路径
TOOLCHAINS_INCLUDE=$(TOOLCHAINS_ROOT)/lib/gcc/arm-linux-androideabi/4.6/include-fixed
#SDK根目录
PLATFROM_ROOT=$(NDK_ROOT)/platforms/android-14/arch-arm
#sdk头文件搜索路径
PLATFROM_INCLUDE=$(PLATFROM_ROOT)/usr/include
#sdk库文件搜索路径
PLATFROM_LIB=$(PLATFROM_ROOT)/usr/lib
#文件名称
MODALE_NAME=hello
#删除
RM=rm
#编译选项
FLAGS=-I$(TOOLCHAINS_INCLUDE) \
      -I$(PLATFROM_INCLUDE)   \
      -L$(PLATFROM_LIB) \
      -nostdlib \
      -lgcc \
      -Bdynamic \
      -lc
#所有obj文件
OBJS=$(MODALE_NAME).o \
     $(PLATFROM_LIB)/crtbegin_dynamic.o \
     $(PLATFROM_LIB)/crtend_android.o 
#编译器链接
all:
	$(TOOLCHAINS_PREFIX)-gcc $(FLAGS) -c $(MODALE_NAME).s -o $(MODALE_NAME).o
	$(TOOLCHAINS_PREFIX)-gcc $(FLAGS) $(OBJS) -o $(MODALE_NAME)
old:
	$(TOOLCHAINS_PREFIX)-gcc $(FLAGS) -E $(MODALE_NAME).c -o $(MODALE_NAME).i
	$(TOOLCHAINS_PREFIX)-gcc $(FLAGS) -S $(MODALE_NAME).i -marm -o $(MODALE_NAME).s
	$(TOOLCHAINS_PREFIX)-gcc $(FLAGS) -c $(MODALE_NAME).s -o $(MODALE_NAME).o
	$(TOOLCHAINS_PREFIX)-gcc $(FLAGS) $(OBJS) -o $(MODALE_NAME)
#删除所有.o文件
clean:
	$(RM) *.o
	$(RM) *.i
	$(RM) $(MODALE_NAME)
	
#安装程序到手机
install:
	adb push $(MODALE_NAME) /data/local/tmp
	adb shell chmod 755 /data/local/tmp/$(MODALE_NAME)
	adb shell /data/local/tmp/$(MODALE_NAME) 
#运行程序
run:
	adb shell /data/local/tmp/$(MODALE_NAME) 

make old
即可通过c来生成汇编文件


make即可编译arm汇编


Using as--the GNU Assembler 一份GNU arm汇编的文档
http://sourceware.org/binutils/docs/as/index.html
源码下载:
ndk生成ARM汇编(附代码)_第1张图片

你可能感兴趣的:(android,ndk)