Ubuntu1604交叉编译全志T7开发板ARM版Easydarwin

NVIDIA jetson nano搭建Ubuntu ARM+ROS+EasyDarwin+FFmpeg+x264+RTSP推流服务器

公司采购了一块全志T7开发板带芯片,用于视频四路推流。根据延时、温度、性能综合考虑,使用FFmpeg+EasyDarwin+T7实行。而T7的芯片和系统无法在开发板上编译源码,所以需要交叉编译。

简单来说,在Ubuntu16.04主系统上交叉编译给全志T7开发板使用的ARM版Easydarwin可执行文件。

首先,T7是2017年发布的,可能这是选择1604的原因。

EasyDarwin

EasyDrawin是高性能开源RTSP流媒体服务器,基于go语言研发,维护和优化:RTSP推模式转发、RTSP拉模式转发、录像、检索、回放、关键帧缓存、秒开画面、RESTful接口、WEB后台管理、分布式负载均衡…

官网: http://www.easydarwin.org/

Github地址: https://github.com/EasyDarwin/EasyDarwin

Release地址: https://github.com/EasyDarwin/EasyDarwin/releases

因为github上并未提供编译好的arm平台程序,只提供了Windows和Linux的x86平台,所以我们需要自己编译。

编译

前提

编译环境

交叉编译工具链:Lichee Linux BSP(由全志提供)

准备

GO

1、从官方下载软件包:https://golang.google.cn/dl/

2、解压:

1
sudo tar -C /usr/local -xzf go1.14.3.linux-amd64.tar.gz

3、设置环境变量

1
2
export PATH=$PATH:/usr/local/go/bin
export GOPATH=~/go

GOPATH必须要有

4、测试

1
go version

node

1、下载软件包:https://nodejs.org/en/download/

注意:不能是pre版的,必须是正式发布版。

2、解压:

1
sudo tar -xvJf node-v14.12.0-linux-x64.tar.xz

3、设置环境变量

1
export PATH=$PATH:/usr/local/go/bin:/usr/local/node-v14.12.0-linux-x64/bin

4、测试

1
node -v

依赖

1
2
3
4
go get -u -v github.com/kardianos/govendor
go get -u -v github.com/penggy/gobuild
sudo npm i -g apidoc
sudo npm i -g rimraf

源码编译

源码

1
2
3
4
cd $GOPATH/src/github.com/
mkdir EasyDarwin && cd EasyDarwin
git clone https://github.com/EasyDarwin/EasyDarwin.git --depth=1 EasyDarwin
cd EasyDarwin/

编译源码

1
2
3
4
5
6
export PKG_CONFIG_PATH="/home/linkpi/Desktop/t7linux-auto/out/sun8iw17p1/linux/common/buildroot/host/usr/arm-buildroot-linux-gnueabi/sysroot/usr/lib/pkgconfig/:"$PKG_CONFIG_PATH
export GOARCH=arm
export CGO_ENABLED=1
export CC=arm-linux-gnueabi-gcc
export GOOS=linux
npm run build:lin

这个时候会报错:

1
2
# github.com/EasyDarwin/EasyDarwin/routers
routers/record.go:106:13: constant 4294967295 overflows int

/home/linkpi/go/src/github.com/EasyDarwin/EasyDarwin/routers/record.go的106行修改一下:

1
2
//form.Limit = math.MaxUint32
form.Limit = math.MaxInt32

继续编译出结果:

1
2
$ file easydarwin
easydarwin: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=093393b920681cf78401ae55b0b20780ed776f3b, stripped

结果文件

EasyDarwin-aarch64-8.1.0-20043010.tar.gz