JSMN(JSON parse library) 사용법 - 임베디드 플랫폼용으로 빌드하기

반응형

    개요

    JSMN(JSON parse library)는 JSON 구문 파싱 라이브러리이며, 공식 웹사이트는 아래와 같습니다.

    본 글에서는 JSMN 라이브러리를 ARM 기반 임베디드 리눅스 플랫폼용으로 빌드하는 방법에 대해 소개합니다. 빌드 환경은 Ubuntu 16.04 리눅스입니다.

     

    크로스 컴파일러 설치

    Ubuntu 16.04 리눅스 환경에서, jsmn 라이브러리를 빌드하기 위한 크로스 컴파일러를 설치합니다. 여기서는 "arm-linux-gnueabihf-gcc"를 사용합니다.

    $ sudo apt update
    $ sudo apt install gcc-arm-linux-gnueabihf

     

    JSMN 소스 패키지 다운로드

    github.com/zserge/jsmn에서 JSMN 라이브러리 소스 패키지를 다운로드합니다.

     

     

    JSMN 소스 패키지 빌드

    다운로드한 소스 패키지의 압축을 해제합니다.

    $ unzip jsmn-master.zip
    $ cd jsmn-master

     

    JSMN의 Makefile은 아래와 같이 구성되어 있으며, 첫 번째 줄에 따르면 config.mk 파일로부터 사용자 설정을 읽어 빌드에 적용함을 알 수 있습니다.

    # You can put your build options here
    -include config.mk
    
    all: libjsmn.a 
    
    libjsmn.a: jsmn.o
    	$(AR) rc $@ $^
    
    %.o: %.c jsmn.h
    	$(CC) -c $(CFLAGS) $< -o $@
    
    test: test_default test_strict test_links test_strict_links
    test_default: test/tests.c
    	$(CC) $(CFLAGS) $(LDFLAGS) $< -o test/$@
    	./test/$@
    test_strict: test/tests.c
    	$(CC) -DJSMN_STRICT=1 $(CFLAGS) $(LDFLAGS) $< -o test/$@
    	./test/$@
    test_links: test/tests.c
    	$(CC) -DJSMN_PARENT_LINKS=1 $(CFLAGS) $(LDFLAGS) $< -o test/$@
    	./test/$@
    test_strict_links: test/tests.c
    	$(CC) -DJSMN_STRICT=1 -DJSMN_PARENT_LINKS=1 $(CFLAGS) $(LDFLAGS) $< -o test/$@
    	./test/$@
    
    jsmn_test.o: jsmn_test.c libjsmn.a
    
    simple_example: example/simple.o libjsmn.a
    	$(CC) $(LDFLAGS) $^ -o $@
    
    jsondump: example/jsondump.o libjsmn.a
    	$(CC) $(LDFLAGS) $^ -o $@
    
    clean:
    	rm -f *.o example/*.o
    	rm -f *.a *.so
    	rm -f simple_example
    	rm -f jsondump
    
    .PHONY: all clean test

     

     

     

    config.mk 파일을 생성하여 다음과 같이 작성합니다.

    "arm-linux-gnueabihf-"와 같은 컴파일러 프리픽스는 툴체인 환경에 따라 작성하면 됩니다.

    CROSS_COMPILE = arm-linux-gnueabihf-
    CC = $(CROSS_COMPILE)gcc
    AR = $(CROSS_COMPILE)ar

     

    소스 패키지를 빌드합니다. 빌드가 성공하면 라이브러리 파일인 libjsmn.a 파일이 생성됩니다.

    $ make

     

    어플리케이션 빌드 및 실행

    JSMN을 사용하고자 하는 어플리케이션은 생성된 libjsmn.a 라이브러리 파일과 소스패키지 폴더 내에 포함되어 있는 jsmn.h을 포함하여 빌드합니다.

    • jsmn.h와 libjsmn.a 파일을 어플리케이션 소스패키지의 특정 폴더 내에 복사합니다.
    • 어플리케이션 빌드 시 Makefile에 다음과 같이 명시하여 라이브러리를 링크하여 빌드하도록 합니다.
      • CFLAGS += -L특정폴더 -ljsmn

    파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

     

    댓글

    Designed by JB FACTORY