Build Android-C App with NDK
16lz
2022-05-28
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
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer