概述
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:$PATH
export PREFIX=/usr
export 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-strip
export CROSS_COMPILE=aarch64-linux-
export PKG_CONFIG_SYSROOT_DIR=$BUILDSYSROOT
export PKG_CONFIG_PATH=$BUILDSYSROOT/usr/lib/pkgconfig:$BUILDSYSROOT/usr/share/pkgconfig
编写好配置文件之后使用 source
命令使之立即生效,这样可以使用正确的交叉编译器进行编译,同时在配置 CC,CXX,CPP,LD 环境变量时指定 --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 😄
欢迎关注我的公众号:飞翔的小黄鸭
也许会发现不一样的风景
△
\triangle
△ 交叉编译 CURL
▽
\bigtriangledown
▽ 交叉编译 Crypto++