Linux aarch64交叉编译之cJSON解析器

对于cJSON项目的交叉编译,该项目难度并不大,灵活性也较强。该文章的目标是编译一套aarch64 Linux Debian嵌入式版本上可以运行的版本库,基本无坑。老套路,先把linux桌面版搞好,然后 移植到嵌入式Linux Debian 板子上。

1 cJSON简介

cJSON是一种JSON格式的解析库,其主要功能就是构建(封装)和解析(解封装) Json 格式,实现非常简洁,核心只有2个文件,一个cJSON.c文件,一个cJSON.h头文件。

关于JSON如果想有更多了解可查看:

2 Linux 本地编译 & 交叉编译

2.1 Linux(ubuntu20.04)上cJSON的编译

cJSON编译还是很方便的,直接上:

make
make DESTDIR=$PWD/out_x86_64 install

最后生成内容为:

└── usr
    └── local
        ├── include
        │   └── cjson
        │       ├── cJSON.h
        │       └── cJSON_Utils.h
        └── lib
            ├── libcjson.so -> libcjson.so.1
            ├── libcjson.so.1 -> libcjson.so.1.7.15
            ├── libcjson.so.1.7.15
            ├── libcjson_utils.so -> libcjson_utils.so.1
            ├── libcjson_utils.so.1 -> libcjson_utils.so.1.7.15
            └── libcjson_utils.so.1.7.15

2.2 aarch64交叉编译与移植

因为是用aarch64交叉编译,需要提前配置环境,安装如下软件:

sudo apt install binutils-aarch64-linux-gnu-dbg binutils-aarch64-linux-gnu cpp-aarch64-linux-gnu \
g++-10-aarch64-linux-gnu g++-9-aarch64-linux-gnu g++-aarch64-linux-gnu g++ \
gcc-10-aarch64-linux-gnu-base gcc-9-aarch64-linux-gnu-base gcc-aarch64-linux-gnu \
pkg-config-aarch64-linux-gnu qemu-efi-aarch64 gcc arch-test

对于cJSON的交叉编译就简单很多了,只需要执行:

make CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++
make DESTDIR=$PWD/out_aarch64 install

最后生成内容与PC相同。

2.3 优化和自定义cJSON Project

一般情况下,关于定制,我们用到和修改的文件也就是以下几个:

├── cJSON.cpp
├── cJSON.h
├── cJSON_Utils.cpp
├── cJSON_Utils.h
└── CMakeLists.txt

那么我们可以自定义CMakeLists.txt文件,内容如下:

cmake_minimum_required(VERSION 3.4.1)
project(cJSON)
add_library(cJSON SHARED cJSON.cpp cJSON_Utils.cpp)
target_include_directories(cJSON PUBLIC .)

然后开始使用cmake进行编译,如下所示:

#PC Linux X86 / X86_64 编译
mkdir build
cd build
cmake ..
make

#嵌入式Linux debian11 aarch64
mkdir build
cd build
CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ cmake ..
make

当然这里Header文件还是需要单独拷贝出去的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图王大胜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值