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宏注释掉,然后重新编译库,就正常使用了。