今天安装了一个jsoncpp ,jsoncpp 是一个c++ 的json包,支持跨平台
需要首先安装scons,但是要首先安装python,linux下支持了python。
(x86平台)
编译scons
tar -zvxf scons-2.1.0.tar.gz
设置环境变量
export MYSCONS=解压的路径
export SCONS_LIB_DIR=$MYSCONS/engine
注意:这两个环境变量至关重要。
解压jsoncpp
tar -zvxf jsoncpp-src-0.5.0.tar.gz
切换到jsoncpp的解压目录,执行命令:切记一定要解压切换的目录
python $MYSCONS/script/scons platform=linux-gcc
生成静态和动态库文件
在jsoncpp-src-0.5.0/libs/linux-gcc-4.1.2目录下
libjson_linux-gcc-4.4.4_libmt.a
libjson_linux-gcc-4.4.4_libmt.so
根据自己的用途,可以将libjson_linux-gcc-4.4.4_libmt.a和libjson_linux-gcc-4.4.1.libmt.so任意一个拷贝到/usr/lib下,我选择了静态库库文件,将解压后的文件夹下的INCLUDE中的头文件拷贝到/usr/include/json下。
使用时 需要讲头文件 即 include下的文件复制到工程下
使用示例
#include "json/json.h"
#include
#include
using namespace std;
int main()
{
string test ="{\"id\":1,\"name\":\"kurama\"}";
Json::Reader reader;
Json::Value value;
if(reader.parse(test,value))
{
if(!value["id"].isNull())
{
cout<
}
return 0;
}
编译 为了方便编译 我将静态库文件命名为libjson.a
g++ -o main main.cpp -L. -ljson
(mtk)
MTK 平台上的搭建
由于mtk平台和X86平台上架构不一样 ,需要单独的交叉编译工具链。
主要是动态库问题,要单独的生成两个静态库和动态库。
Mtk 编译的工具链:mipsel-linux-uclibc-g++
1 由于没有包含 arm 平台,类似 linux-gcc,所以把源码提取出来,独立编译
$ mkdir arm_jsoncpp
$ cp include/ arm_jsoncpp/ -r
$ cp src/lib_json/* arm_jsoncpp/
$ cd arm_jsoncpp/
# 编译静态库
$ arm-linux-gnueabihf-g++ -c *.cpp -I./include -fPIC
$ ar cr libjsoncpp.a *.o
# 编译动态库
$ arm-linux-gnueabihf-g++ -shared -fPIC *.cpp -I./include -olibjsoncpp.so
2 生成了动态库libjsoncpp.so,然后copy到 opt下存放的交叉编译工具链中的lib库中。
cp libjsoncpp.so/opt/buildroot-gcc342/mipsel-linux-uclibc/bin/../lib/
3 然后就可以编译了
mipsel-linux-uclibc-g++-o xxx xxx.cpp –ljsoncpp
4 然后copy到板子上 xxx 还要copy libjsoncpp.so到板子上的lib库
5 运行./xxx