안드로이드에서 실행되는 native 프로그램 (C 언어) 에서
json 을 활용하기 위해 json 라이브러리를 하나 ndk 로 빌드해 보았습니다.
혹시 비슷한 작업을 하시는 분이 있다면 도움이 될 수 있도록 과정을 남깁니다.
1. 라이브러리 소스 다운
json C 라이브러리로 많이 사용되는 jansson 소스를 다운 받습니다.
2. 소스 추출
라이브러리 소스 구조가 매우 단순합니다. src 안의 모든 소스를 따로 복사합니다.
3. Makefile
소스를 ndk 컴파일러로 빌드할 수 있도록 Makefile 을 만들어줍니다.
# dynamic library build Makefile
CROSS_PREFIX = arm-linux-androideabi- ## 사용자 소스 ## 인클루드 디렉토리 INCLUDEDIRS = -I. -I$(ANDROID_NDK_ROOT)/sysroot/usr/include/ OBJS = $(C_SRCS:.c=.o) CFLAGS = $(INCLUDEDIRS) -nostdlib -Wall -fPIC -O2 -DANDROID all : $(TARGET) $(TARGET) : $(OBJS) %.o:%.c %.o:%.cpp dep : clean: show: distclean: clean
|
MIT license 라는 라이센스가 있는 것이더군요. 함부로 소스 포함시켰다 소스 공개해야 하는 건 마찬가지입니다.
따라서 별도의 so 로 빌드해야 합니다.
ndk 크로스 컴파일러 사용법은
http://forum.falinux.com/zbxe/index.php?mid=android&document_srl=576443
에서 참조 바랍니다.
4. 사용하기.
application 개발은 #include <jansson.h> 를 추가해서 하면됩니다. 물런 헤더 파일이 찾을 수 있는 위치에 있어야겠지요.
빌드시에는 당연히 -ljansson 옵션이 링크 옵션으로 들어가야합니다.
그리고 android device 에서 해당 native application 을 구동하기 위해서는 libjansson.so 가 /system/lib/ 에 들어가 있어야 합니다.
아니면 so 를 찾지 못해서 재대로 실행할 수 없습니다.