jsoncpp linux平台编译和 交叉编译
2017-07-22 本文已影响0人
monkeyish
1、下载源码包 我下载版本:jsoncpp-src-0.5.0.tar.gz
2、在压缩包目录下执行解压操作,执行命令解压:tar -zxvf jsoncpp-src-0.5.0.tar.gz
![](https://img.haomeiwen.com/i3317902/443ccf5bcaf7bb74.png)
3、linux 平台编译
进入解压得到的文件目录中 : cd jsoncpp-src-0.5.0/
先安装 scons 在直接编译下(相比Makefile要操作简单 )执行下面命令
sudo apt-get install scons
scons platform=linux-gcc
这样就直接可以获取到linux平台下的静态库和动态库具体和GCC的版本有关系
动态库:./libs/linux-gcc-4.6/libjson_linux-gcc-4.6_libmt.so
静态库:./libs/linux-gcc-4.6/libjson_linux-gcc-4.6_libmt.a
![](https://img.haomeiwen.com/i3317902/42b5d6be147dac3d.png)
4、嵌入式linux平台下交叉编译生成文件
嵌入式linux 平台下需要使用相应的交叉编译工具 类似GCC
首先将源码提取出来 单独放在一个目录中
mkdir arm_jsoncpp
cp include/ arm_jsoncpp/ -r
cp src/lib_json/* arm_jsoncpp/
cd arm_jsoncpp/
![](https://img.haomeiwen.com/i3317902/da16621a924a12c4.png)
进入目录后开始编译文件
编译静态库
arm-arago-linux-gnueabi-g++ -c *.cpp -I./include -fPIC
ar cr libjsoncpp.a *.o
![](https://img.haomeiwen.com/i3317902/2d2afd2217b8788c.png)
静态库:./arm_jsoncpp/libjsoncpp.a
![](https://img.haomeiwen.com/i3317902/02ee7843fcc1f1d8.png)
编译动态库
arm-arago-linux-gnueabi-g++ -shared -fPIC *.cpp -I./include -o libjsoncpp.so
动态库:./arm_jsoncpp/libjsoncpp.so
5、静态库的使用
#include <stdio.h>
#include<termios.h>
#include <time.h>
#include <iostream>
#include <string>
#include "arm_jsoncpp/include/json/json.h"
using namespace std;
int main(void)
{
Json::Value root;
Json::FastWriter fast;
root["ModuleType"] = Json::Value("你好");
root["ModuleCode"] = Json::Value("22");
root["ModuleDesc"] = Json::Value("33");
root["DateTime"] = Json::Value("44");
root["LogType"] = Json::Value("55");
cout<<fast.write(root)<<endl;
return 0;
}
linux 平台下编译执行
g++ hello.cpp ./libjson_linux-gcc-4.6_libmt.a -o hello1
![](https://img.haomeiwen.com/i3317902/9f4efedfee2ca520.png)
嵌入式linux下编译执行
![](https://img.haomeiwen.com/i3317902/7357c932564ff277.png)
将生成文件拷贝到嵌入式环境中执行:
![](https://img.haomeiwen.com/i3317902/a1e42597f398a693.png)