libjson-c 库移植开发使用

1.下载地址:

  git clone https://github.com/json-c/json-c.git

 

2.编译

  在json-c 的同级目录创建新文件,命名为:toolChain_json.cmake

  加入以下内容:

    

set(CMAKE_SYSTEM_NAME Linux)
 
SET(TOOLCHAIN_DIR "/home/ljx/ingenic/toolchain/mips-gcc540-glibc222-64bit-r3.3.0")
set(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/mips-linux-uclibc-gnu-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/mips-linux-uclibc-gnu-g++)

link_libraries(m)

set(CMAKE_FIND_ROOT_PATH "/home/ljx/ubus/json-c")
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

  

  然后进入json-c目录,使用如下编译命令:

  cmake -DCMAKE_INSTALL_PREFIX=/home/ljx/ubus/libubox/install -DCMAKE_TOOLCHAIN_FILE=../toolChain_json.cmake .

  make

  make install

 

  没有发生错误的话,经过上面,在/home/ljx/ubus/libubox/install目录,就可以看到编译出来的产物了。

 

3.修正BUG

 

  1.当调用到json_verify_get_int函数时,会发生段错误。json_verify_get_int代码如下:

  

 

   进一步定位发现,在json_tokener_parse函数里面会发生未知的段错误,再追进入就不好定位了。

 

  解决方法:

  修改json-c代码中config.h文件里的宏,如下:

  

 

  把HAVE_USELOCALE宏注释掉,然后重新编译库,就正常使用了。

  

posted @ 2021-06-07 18:07  辣椒炒牛肉  阅读(653)  评论(0编辑  收藏  举报