概述

JSON 是一种轻量级数据交换格式。它可以表示数据、字符串、有序的值序列以及名称/值对的集合。

JsonCpp 是一个 C++ 库,允许操作 JSON 值,包括字符串之间的序列化和反序列化。它还可以在反序列化/序列化步骤中保留现有注释,使其成为存储用户输入文件的方便格式。

JsonCpp 目前在 github 上托管。

官方网址:https://github.com/open-source-parsers/jsoncpp

下载

开发版本 (最新)

如果以研究学习为目的,或者希望尝试最新特性,又或者希望参与到 JsonCpp 的开发中,可以直接从 github 上拉取最新源码,拉取命令:

git clone https://github.com/open-source-parsers/jsoncpp.git

技巧:在 github 页面点击右上角的 Code 按钮获取 git clone 链接。

发行版本

如果以商用量产为目的,一般选择正式的发行版本为佳。在 JsonCpp 的 Release 页面,源码以压缩包的形式提供,根据需求选择合适的版本进行下载,以最新的 1.9.5 为例,下载源码包 Source Code.


也可以直接使用 wget 命令下载:

wget https://github.com/open-source-parsers/jsoncpp/archive/refs/tags/1.9.5.tar.gz

交叉编译

解压缩源码包,如果使用 git clone 拉回来的代码可以忽略这一步

tar -xvf jsoncpp-1.9.5.tar.gz

修改 CMakeLists.txt,将 JSONCPP_WITH_TESTS 配置成 OFF,不去编译测试工程:

option(JSONCPP_WITH_TESTS "Compile and (for jsoncpp_check) run JsonCpp test executables" ON)

修改为

option(JSONCPP_WITH_TESTS "Compile and (for jsoncpp_check) run JsonCpp test executables" OFF)

JsonCpp 使用了 CMake 编译系统,需要保证系统中已经安装了 cmake 工具。可以使用 apt 命令进行安装:

sudo apt install -y cmake

让我们创建一个环境配置文件 aarch64-environment-setup,配置最重要的交叉编译环境变量:

aarch64-environment-setup:

export TOOLCHAIN_ROOT=/opt/toolchains/aarch64--glibc--stable-2020.08-1
export BUILDSYSROOT=$TOOLCHAIN_ROOT/aarch64-buildroot-linux-gnu/sysroot
export PATH=$TOOLCHAIN_ROOT/bin:$PATHexport PREFIX=/usrexport CC="aarch64-linux-gcc --sysroot=$BUILDSYSROOT"
export CXX="aarch64-linux-g++ --sysroot=$BUILDSYSROOT"
export CPP="aarch64-linux-gcc -E --sysroot=$BUILDSYSROOT"
export LD="aarch64-linux-ld --sysroot=$BUILDSYSROOT"
export AR=aarch64-linux-ar
export AS=aarch64-linux-as
export NM=aarch64-linux-nm
export GDB=aarch64-linux-gdb
export OBJDUMP=aarch64-linux-objdump
export OBJCOPY=aarch64-linux-objcopy
export RANLIB=aarch64-linux-ranlib
export READELF=aarch64-linux-readelf
export STRIP=aarch64-linux-stripexport CROSS_COMPILE=aarch64-linux-export PKG_CONFIG_SYSROOT_DIR=$BUILDSYSROOT
export PKG_CONFIG_PATH=$BUILDSYSROOT/usr/lib/pkgconfig:$BUILDSYSROOT/usr/share/pkgconfig

编写好配置文件之后使用 source 命令使之立即生效,这样可以使用正确的交叉编译器进行编译,同时在配置 CCCXXCPPLD 环境变量时指定 --sysroot=<dir> 参数让交叉编译器搜索 dir 目录下的头文件与库文件。

source aarch64-environment-setup
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$PREFIX ..
make
make DESTDIR=/tmp/sysroot install

在执行 cmake 指令时,配置的环境变量会生效,能够正确查找到交叉编译器的路径。

最后,生成产物会放置在 /tmp/sysroot/usr 目录下,包含头文件与库文件。

Enjoy your life

交叉编译 JsonCpp相关推荐

  1. 交叉编译jsoncpp

    linux交叉编译ARM64的jsoncpp 概述 JSON 是一种轻量级数据交换格式.它可以表示数据.字符串.有序的值序列以及名称/值对的集合. JsonCpp 是一个 C++ 库,允许操作 JSO ...

  2. arm交叉编译jsoncpp

    下载 git git clone https://github.com/open-source-parsers/jsoncpp 进入目录 jsoncpp/src/lib_json 动态编译 arm-l ...

  3. 交叉编译 Crypto++

    交叉编译 Crypto++ 概述 Crypto++ 是一个免费开源的 C++ 密码学库,由 Wei Dai(美籍华裔)首次开发,当前由 Crypto++ 项目团队维护,源代码在 github 上进行托 ...

  4. JsonCpp 使用指导

    前言 JSON 是一种轻量级数据交换格式.它可以表示数据.字符串.有序的值序列以及名称/值对的集合. JsonCpp 是一个 C++ 库,允许操作 JSON 值,包括字符串之间的序列化和反序列化.它还 ...

  5. 【华为云技术分享】【玩转Atlas200DK系列】应用开发之 交叉编译第三方库并在工程中使用(jsoncpp)

    在本案中,我们以jsoncpp为例来介绍如何交叉编译第三方库,并在工程中是使用: 1. 从github上下载jsoncpp源码 wget https://github.com/open-source- ...

  6. jsoncpp的安装与使用实战(windows交叉编译Ubuntu)

    开发环境:Windows10 + VS2017 + wsl 目的:交叉编译Ubuntu系统中需要的库文件 操作步骤: 1.Windows10系统中安装wsl,我安装的是Ubuntu18.04 LTS. ...

  7. jsoncpp交叉编译配置

    $ mkdir arm_jsoncpp $ cp include/ arm_jsoncpp/ -r $ cp src/lib_json/* arm_jsoncpp/ $ cd arm_jsoncpp/ ...

  8. linux编译jsoncpp

    jsoncpp简介: jsoncpp是一个 C++ 库,用于实现json格式的序列化和反序列化,完成多个数据对象组织成为json格式字符串,以及将json格式字符串解析成得到多个数据对象的数据.它还可 ...

  9. 海思3518ev200学习记录(2) - 交叉编译官方webRTC

    系列文章目录 海思3518ev200学习记录(1)- 根据用户手册烧录系统镜像 海思3518ev200学习记录(2) - 交叉编译官方webRTC 海思3518ev200学习记录(3) - 编译 am ...

最新文章

  1. Vision Transformers 大有可为!
  2. python四大软件-PYPL 9月编程语言排行榜发布 Python一枝独秀
  3. 010_JMS消息选择器
  4. 好用到爆的 Java 小技巧
  5. c打开指定路径文件_C++ 读取指定路径下所有的文件 (C++ get the list of files in a directory)...
  6. Spring MVC--使用默认的servlet来响应静态文件
  7. Spark2.3.0的DataFrame去哪了,DataSet是哪位?
  8. 第一百二十一期:当新闻报道用上AR 技术,能为读者带来什么?
  9. 电脑音箱有电流声_你以为音响就是音箱?音响≠音箱
  10. 转:windows 蓝屏代码 .
  11. 有趣的ASCII-Art
  12. 网站实时监控,Web网站及前端性能监控方法
  13. 微擎打开导航提示该网页无法正常运作
  14. php html字符转换为字符串,PHP字符串函数html_entity_decode( 把HTML实体转换为字符)
  15. 论文阅读笔记《Few-Shot Learning with Global Class Representations》
  16. pygame--图片随键盘移动
  17. VisualNet地税管道资源管理系统
  18. 英语流利说 第25天
  19. 产品经理必不可少的证书!
  20. Tektronix泰克MDO3054示波器

热门文章

  1. 川崎机器人signal_揭阳市Kawasaki焊接机器人保养中心
  2. C语言 最大公约数三种方法
  3. 第一人称入行分享贴:大学混了四年,如何顺利入行互联网
  4. [Nios][Eclipse] find_fast_cwd: WARNING: Couldn't compute FAST_CWD pointer
  5. SpringCloud搭建分布式服务架构(通俗易懂,步骤清晰)
  6. es倒排索引和mysql索引的_【漫画】ES原理 必知必会的倒排索引和分词
  7. 力扣93 - 复原IP地址【回溯算法】
  8. 实测 (三)NVIDIA Xavier NX + D435i / 奥比中光Astrapro 相机+ ORB-SLAM 2 + 3 稠密回环建图
  9. 思科网络技术学院:CCNA各学期章节练习-期末考试-折扣号考试试题
  10. 计算机三级网络技术第四章(第一轮)