交叉编译jsoncpp

linux交叉编译ARM64的jsoncpp

概述
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.

交叉编译
JsonCpp 使用了 CMake 编译系统,进行交叉编译前我们需要先创建一个 toolchain.cmake 文件:

 

# This is required. target system name
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR arm)

# specify the cross compiler
SET(TOOLCHAIN_PATH /work/sdk/nvidia/nvidia_6.0.1.0/toolchains/aarch64--glibc--stable-2020.08-1)
SET(CMAKE_SYSROOT ${TOOLCHAIN_PATH}/aarch64-buildroot-linux-gnu/sysroot)
SET(CMAKE_C_COMPILER   ${TOOLCHAIN_PATH}/bin/aarch64-linux-gcc)
SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_PATH}/bin/aarch64-linux-g++)

# search for programs in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)

# for libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)



设置 CMAKE_SYSTEM_NAME 为 Linux,指的是编译代码的系统是 Linux
设置 CMAKE_SYSTEM_PROCESSOR 为 arm,指的是运行的系统是在 arm 上面
定义 TOOLCHAIN_PATH 指向 /work/sdk/nvidia/nvidia_6.0.1.0/toolchains/aarch64--glibc--stable-2020.08-1,该变量供后面几个配置参数使用
定义 CMAKE_SYSROOT 指向 toolchain 的 sysroot 路径
定义 CMAKE_C_COMPILER 为 aarch64-linux-gcc
定义 CMAKE_CXX_COMPILER 为 aarch64-linux-g++
解压缩源码包,如果使用 git clone 拉回来的代码可以忽略这一步

* tar -xvf jsoncpp-1.9.5.tar.gz   此命令是下载.tar.gz使用的   而我用的是git clone  源代码



修改 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)


指定 toolchain.cmake 与生成目录的路径,就可以开始进行交叉编译了:
在jsoncpp  文件夹下

mkdir output
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake -DCMAKE_INSTALL_PREFIX=../output ..
make
make install

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值