前言
RK3568芯片功能强大,在作为边缘网关进行数据采集时,可以使用influxdb数据库进行数据持久化保存。influxdb没有提供C++语言的客户端访问功能。如果我们是用C++开发的应用程序,就没有办法直接访问influxdb。一个变通办法是,我们可以用go语言编写数据库访问程序,然后将其编译成C++可以调用的库函数,再由C++应用程序调用此库函数,以此完成数据库的访问功能。
一、下载编译器
为了实现上述方案。我们需要先下载go编译器。
下载地址为https://golang.google.cn/dl/
根据需要,选择对应的编译器文件版本下载。
二、解压安装
将上述文件拷贝到开发环境目录下面后,进行解压,
sudo tar -C /usr/local -xzf go1.20.2.linux-amd64.tar.gz
然后添加如下环境变量,
在环境变量配置文件/etc/profile中添加以下内容:
export PATH=$PATH:/usr/local/src/go/bin
export PATH=/home/forlinx/Tool.ins/go1.20.2.linux-amd64/go/bin:$PATH
export GOPROXY=https://goproxy.cn,direct
export GODEBUG=cgocheck=0
export PATH=/home/forlinx/3568/OK3568-linux-source/buildroot/output/OK3568/host/bin:$PATH
三、编译库函数
用go语言编写好influxdb的访问接口函数后,可以开始编译库函数。
如果要编译在x86下运行的库函数,用下列命令
GOOS=linux \
GOARCH=amd64 \
AR=ar \
CC=gcc \
CXX=g++ \
go build -ldflags="-s -w" -buildmode=c-archive -o InfluxTest/bin/libinfluxDB.a main.go
这样编译完成后,在指定目录下会生成相应的库函数,libinfluxDB.a。
如果要编译在3568下运行的库函数,则用下列命令
GOOS=linux \
GOARCH=arm64 \
CGO_ENABLED=1 \
CC=aarch64-linux-gcc \
CXX=aarch64-linux-g++ \
AR=aarch64-linux-gnu-ar \
go build -ldflags="-s -w" -buildmode=c-archive -o InfluxTest/bin/libinfluxDB.a main.go