全志T507上编译ncnn(CPU版本)

参照nihui大佬的gitbub,废话少说,直接开整。

前言

这里用了全志的T507进行CPU的版本编译,一定会有童鞋问:为何不用T507的G31的GPU,进行基于vulkan的编译?

答:原因是我没有找到对应的vulkan的so库,如果有小伙伴有这个库,或者在安卓系统中巴拉的so库,可以私信发给我,这边有空了会进行GPU版本的编译。(也可给我发一下opencl的so库,也想试一下阿里的MNN效果)

下载ncnn源代码

git clone https://github.com/Tencent/ncnn.git
cd ncnn
git submodule update --init

CMake生成makefile

如果没有安装CMake,请安装CMake:

apt install cmake

如果没有安装交叉编译链(下载网址:https://www.linaro.org/downloads/):

//解压
tar -xvf gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar
mkdir -p build-aarch64-linux-gnu
cd build-aarch64-linux-gnu
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu-c.toolchain.cmake ..
make -j$(nproc)
make install

基本到这一步还是顺利的!ncnn已经编译完成。

编译成功:
在这里插入图片描述
install成功:
在这里插入图片描述

测试验证

这采用了T507的开发板,进行ncnn的验证。

把libgomp.so.1.0.0放到对应的usr/lib下面,进行ln的软链接。

把编译好的benchncnn,放在执行目录,同时,把benchmark中所有模型放在同一个目录,执行:

./benchncnn

这里用benchncnn来测试,测试效果如下:
在这里插入图片描述

在CMake的时候,如果遇坑,那么,遇坑填坑

1、交叉编译链位置是否在正确,如果找不到,直接用命令查看:

//查看编译链位置
echo $PATH

//导入环境变量
export CC=/opt/EmbedSky/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
export CXX=/opt/EmbedSky/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++

2、可以cmake的时候带上编译链的位置:

cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu-c.toolchain.cmake -DCMAKE_C_COMPILER=/opt/EmbedSky/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=/opt/EmbedSky/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ ..

3、查看交叉编译链选项

aarch64-linux-gnu-gcc -c -Q -march=native --help=target
cc1: error: unknown value ‘native’ for -march
The following options are target specific:
  -mabi=ABI                             lp64
  -march=ARCH                           native
  -mbig-endian                          [disabled]
  -mbionic                              [disabled]
  -mcmodel=                             small
  -mcpu=CPU
  -mfix-cortex-a53-835769               [enabled]
  -mfix-cortex-a53-843419               [enabled]
  -mgeneral-regs-only                   [disabled]
  -mglibc                               [enabled]
  -mlittle-endian                       [enabled]
  -mmusl                                [disabled]
  -momit-leaf-frame-pointer             [enabled]
  -moverride=STRING
  -mpc-relative-literal-loads           [enabled]
  -msign-return-address=                none
  -mstrict-align                        [disabled]
  -mtls-dialect=                        desc
  -mtls-size=                           24
  -mtune=CPU
  -muclibc                              [disabled]

  Known AArch64 ABIs (for use with the -mabi= option):
    ilp32 lp64

  Supported AArch64 return address signing scope (for use with -msign-return-address= option):
    all non-leaf none

  The code model option names for -mcmodel:
    large small tiny

  The possible TLS dialects:
    desc trad

4、aarch64-linux-gnu-gcc/g++ 交叉编译工具链的一些说明

# 查看可以安装的版本
apt-cache search aarch64

# 选择可以安装的版本进行安装
# 此处选择gcc-5-aarch64-linux-gnu以及g++-5-aarch64-linux-gnu进行安装
sudo apt-get install gcc-5-aarch64-linux-gnu 
sudo apt-get install gcc-5-aarch64-linux-gnu

# 安装依赖
sudo apt --fix-broken install

# 安装一个没有版本号的gcc和g++
sudo apt-get install gcc-aarch64-linux-gnu
sudo apt-get install gcc-aarch64-linux-gnu

# 查看版本
aarch64-linux-gnu-g++ -v
aarch64-linux-gnu-gcc -v
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值