linux jsoncpp 安装编译

来源:互联网 发布:淘宝怎么关闭返利 编辑:程序博客网 时间:2024/06/04 09:47

         今天安装了一个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 <string>
#include <iostream>
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<<value["id"].asInt()<<endl;
   cout<<value["name"].asString()<<endl;
  }
 }
 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 





0 0
原创粉丝点击