Here we are going to build an APP with NDK for Android, we will use Makefile during the building.

File --- Makefile

# --- Begin Customized --- BIN = testCUSTOM_OBJS = $(shell find . -name '*.c' | sed 's~.c$$~.o~g')CUSTOM_CXXFLAGS = -WallCUSTOM_CFLAGS = -I.CUSTOM_LDFLAGS = -L.# --- End Customized --- #NDK_ROOT=$(HOME)/tool/android-ndk-r9NDK_ROOT=$(shell dirname $(shell which ndk-build))TOOLCHAINS_ROOT=$(NDK_ROOT)/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64TOOLCHAINS_PREFIX=$(TOOLCHAINS_ROOT)/bin/arm-linux-androideabiTOOLCHAINS_INCLUDE=$(TOOLCHAINS_ROOT)/lib/gcc/arm-linux-androideabi/4.8/include-fixedPLATFORM_ROOT=$(NDK_ROOT)/platforms/android-9/arch-armPLATFORM_INCLUDE=$(PLATFORM_ROOT)/usr/includePLATFORM_LIB=$(PLATFORM_ROOT)/usr/libCFLAGS = -I$(TOOLCHAINS_INCLUDE) \         -I$(PLATFORM_INCLUDE) \         $(CUSTOM_CFLAGS)CXXFLAGS = -Bdynamic \           $(CUSTOM_CXXFLAGS)LDFLAGS = -L$(PLATFORM_LIB) \          -lgcc \          -lc \          -nostdlib \          $(CUSTOM_LDFLAGS)OBJS  = $(CUSTOM_OBJS) \        $(PLATFORM_LIB)/crtbegin_dynamic.o \        $(PLATFORM_LIB)/crtend_android.o.PHONY: all cleanall: $(BIN)$(BIN): $(OBJS)    $(TOOLCHAINS_PREFIX)-gcc $(CXXFLAGS) $(LDFLAGS) $^ -o $@    %.o: %.c    $(TOOLCHAINS_PREFIX)-gcc $(CFLAGS) $(CXXFLAGS) -c $^ -o $@clean:     $(RM) $(BIN) $(CUSTOM_OBJS)

File --- test.c

#include "stdio.h"int main(){    printf("hello world\n");    return 0;}

Building:

xiwang@ERIC-PC:~/localwork/android/hello-android-c$ make cleanrm -f test ./test.oxiwang@ERIC-PC:~/localwork/android/hello-android-c$ make /home/xiwang/tool/android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc -I/home/xiwang/tool/android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.8/include-fixed -I/home/xiwang/tool/android-ndk-r9/platforms/android-9/arch-arm/usr/include -I. -Bdynamic -Wall -c test.c -o test.o/home/xiwang/tool/android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc -Bdynamic -Wall -L/home/xiwang/tool/android-ndk-r9/platforms/android-9/arch-arm/usr/lib -lgcc -lc -nostdlib -L. test.o /home/xiwang/tool/android-ndk-r9/platforms/android-9/arch-arm/usr/lib/crtbegin_dynamic.o /home/xiwang/tool/android-ndk-r9/platforms/android-9/arch-arm/usr/lib/crtend_android.o -o test

See:

xiwang@ERIC-PC:~/localwork/android/hello-android-c$ ls -ld test-rwxrwxr-x 1 xiwang xiwang 6136  8月  8 23:10 test


FAQ:

What if need to add another header file as GCC option?

Just use option -include <header-file> to CC compile command. For example,

CFLAGS += -include /path/to/myheader.h



更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. Android项目结构和HelloWorld
  2. Android——自定义View(学习Android开发
  3. 利用AccessibilityService实现“微信红包
  4. Android关机和重启的调用代码
  5. android native crash日志解析
  6. Android(安卓)-- ListView与Adapter
  7. Android(安卓)Studio 在调试模式下查看不
  8. 最新历史版本 :Android(安卓)Bluetooth
  9. Android(安卓)中不同的系统版本隐藏和显
  10. 在Android(安卓)Studio中进行单元测试和U