美文网首页
jsoncpp linux平台编译和 交叉编译

jsoncpp linux平台编译和 交叉编译

作者: monkeyish | 来源:发表于2017-07-22 10:42 被阅读0次

1、下载源码包 我下载版本:jsoncpp-src-0.5.0.tar.gz
2、在压缩包目录下执行解压操作,执行命令解压:tar -zxvf jsoncpp-src-0.5.0.tar.gz

解压源码.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

linux平台下编译库文件.png

4、嵌入式linux平台下交叉编译生成文件

嵌入式linux 平台下需要使用相应的交叉编译工具 类似GCC
首先将源码提取出来 单独放在一个目录中

mkdir arm_jsoncpp
cp include/ arm_jsoncpp/ -r
cp src/lib_json/* arm_jsoncpp/
cd arm_jsoncpp/
建立交叉编译生成文件目录.png

进入目录后开始编译文件
编译静态库

arm-arago-linux-gnueabi-g++ -c *.cpp -I./include -fPIC
ar cr libjsoncpp.a *.o
交叉编译生成静态库.png

静态库:./arm_jsoncpp/libjsoncpp.a

交叉编译生产动态库.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
代码演示.png

嵌入式linux下编译执行

代码演示.png

将生成文件拷贝到嵌入式环境中执行:

代码演示.png

相关文章

网友评论

      本文标题:jsoncpp linux平台编译和 交叉编译

      本文链接:https://www.haomeiwen.com/subject/cvtskxtx.html