arm_soc平台编译准备

1 概述

arm SoC平台,内部已经集成了相应的libsophon、sophon-opencv和sophon-ffmpeg运行库包,位于/opt/sophon/下。

通常在x86主机上交叉编译程序,使之能够在arm SoC平台运行。您需要在x86主机上使用SOPHON SDK搭建交叉编译环境,将程序所依赖的头文件和库文件打包至soc-sdk目录中。

2 编译环境准备

请参考博文:前置环境配置,进行安装工作

2.4 准备第三方库

依赖libeigen3-dev、libgflags-dev、libgoogle-glog-dev、libexiv2-dev,需在虚拟环境中进行,注意,pipline的编译安装,对于docker并不友好,整体编译环境请勿在docker内进行,应选取完整的x86的linux服务器环境:

2.4.1 准备和构建qemu虚拟环境

在虚拟环境中安装部分arm的依赖库。

# 安装qemu
sudo apt-get install -y qemu-user-static debootstrap
# 创建文件夹,并构建虚拟环境,映射到rootfs文件夹内
mkdir rootfs
cd rootfs
# 构建 ubuntu 20.04的rootfs
sudo qemu-debootstrap --arch=arm64 focal .
sudo cp /usr/bin/qemu-arm-static ~/suanneng/rootfs/usr/bin/
sudo chroot . qemu-aarch64-static /bin/bash

# 进入qemu 后,安装libeigen3-dev、libgflags-dev、libgoogle-glog-dev、libexiv2-dev
apt-get install -y software-properties-common
apt-add-repository universe
apt-get update
apt-get install -y libeigen3-dev libgflags-dev libgoogle-glog-dev libexiv2-dev

# 使用exit命令,退出qemu虚拟环境
exit
2.4.2 拷贝第三方库的头文件和库
# 退出qemu虚拟环境后
# libgoogle-glog-dev
cp -rf ${rootfs}/usr/lib/aarch64-linux-gnu/libglog* ${soc-sdk}/lib
cp -rf ${rootfs}/usr/include/glog ${soc-sdk}/include
# libgflags-dev
cp -rf ${rootfs}/usr/lib/aarch64-linux-gnu/libgflags* ${soc-sdk}/lib
cp -rf ${rootfs}/usr/include/gflags ${soc-sdk}/include
# libexiv2-dev
cp -rf ${rootfs}/usr/lib/aarch64-linux-gnu/libexiv2* ${soc-sdk}/lib
cp -rf ${rootfs}/usr/include/exiv2 ${soc-sdk}/include
# libeigen3-dev
cp -rf ${rootfs}/usr/include/eigen3 ${soc-sdk}/include

这里,交叉编译环境和相关依赖环境的准备步骤已经准备完成,接下来可以编译需要在SoC平台上运行的程序。

3.现成的算能安装包

如果自己编译,安装虚拟环境麻烦,也可使用现成的算能x86编译安装包。

11-02 22:10