ncnn 交叉编译Arm Linux,64位armv8架构

ncnn 交叉编译Arm Linux

对于海思的嵌入式板子,Tencent/ncnn 中提到了,安装 hislicon SDK,就会有它的交叉编译工具,本文是针对其他的arm核嵌入式板子的交叉编译,主要是 64位armv8架构的,例如 rk3399 64位。其他armv7 或者 32 位的可以也可以参考,下载不同的交叉编译工具,修改cmake就行。

1.环境

2.PC 端


下载上文中的交叉编译工具,配置环境变量

gedit ~/.bashrc

在文件中补充环境变量:

export PATH=$PATH:/home/alpha/gcc-arm-8.2-2018.11-x86_64-aarch64-linux-gnu/bin
source ~/.bashrc

下载 ncnn 并交叉编译

git clone https://github.com/Tencent/ncnn.git
cd ncnn
mkdir -p build-aarch64-linux
cd build-aarch64-linux
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake ..
make -j8
make install

其中 ncnn/toolchains/aarch64-linux-gnu.toolchain.cmake 里面没有设置 -mfpu=neon,因为 armv8 架构中默认开启了 NEON;
此外,在编译前,可以把 CMakeLists.txt 中设置的 -fno-rtti -fno-exceptions 参数去掉.
-fno-rtti 禁用运行时类型信息
-fno-exceptions 禁用异常机制 参考
一般只有对程序运行效率及资源占用比较看重的场合才会使用, 如果要做这两个的话最好连libstdc++和其他所有的的c++库都用这两个参数重新编译一遍, 否则光是你自己的程序禁用了这两个特性, 而别的库依然开着, 效果就大打折扣了

交叉编译完成后,就得到了在 64位 armv8 架构下可用的 libncnn.a 库文件。

3.嵌入式端

将生成的 libncnn.a copy 到嵌入式板子的工程路径下,在 CMakeLists.txt 中添加如下,就可以编译自己的工程了。

target_link_libraries(shufflenet ${OpenCV_LIBS})
target_link_libraries(shufflenet ${PROJECT_SOURCE_DIR}/libncnn.a)

others

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值