树莓派编译深度模型

1、利用make进行编译时:make -C /home/pi -f cnnbuild_rtw.mk

编译报错:
make: Entering directory '/home/pi'
g++ -c  -fPIC -O3 -fno-loop-optimize -fno-aggressive-loop-optimizations  -mfpu=neon -march=armv7-a -std=gnu++11  -I"C:/Users/NEVERGUVEIP/Desktop/����ѧϰ/my_train/codegen"  -I"" -I"/include" -o "MWConvLayer.o" "MWConvLayer.cpp"
In file included from MWConvLayerImpl.hpp:7:0,
                 from MWConvLayer.cpp:4:
MWCNNLayerImpl.hpp:11:50: fatal error: arm_compute/runtime/NEON/NEFunctions.h: No such file or directory
 #include "arm_compute/runtime/NEON/NEFunctions.h"

解决方法:主要原因是makefile种没有添加所用到的ACL库的路径

打开makefile文件,大概104行的样子,将ACL的路径添加进去。

树莓派编译深度模型_第1张图片
                                                  ^

2、继续报错 

/usr/local/arm_compute1/support/Half.h:36:25: fatal error: half/half.hpp: No such file or directory
 #include "half/half.hpp"

解决方法:这个错误的原因是half.hpp文件,在include文件夹下

打开/usr/local/arm_compute1/support/Half.h文件,改成下面的样子。

3、bug

 ar: ../cnnbuild.a: Permission denied
cnnbuild_rtw.mk:155: recipe for target '../cnnbuild.a' failed

 这个错误的原因是因为,makefile的意思是要在前一级目录中新建一个cnnbuild.a。可是我已经在根目录下了。所以将makefile中大概17行中的PRODUCT_NAME = ../cnnbuild.a    修改为:PRODUCT_NAME  = cnnbuild.a  这个 的意思是在当前目录建立目标文件。

4、继续修bug

ar: /lib/libarm_compute.so: No such file or directory

原因:还是没有找到这个文件,这个文件不在系统的lib目录下,是在ACL库的目录下。

我的ACL库的版本是18.03,我把它解压在arm_compute1文件夹下,在该文件夹的lib下有多种版本的libarm_compute.so,我的树莓派芯片是armv7的,我就用了linux-armv7a-neon的库文件。

打开makefile,将128行的TOOLCHAIN_LIBS =  /lib/libarm_compute.so  /lib/libarm_compute_core.so 修改为:

TOOLCHAIN_LIBS =  /usr/local/arm_compute1/lib/linux-armv7a-neon/libarm_compute.so   /usr/local/arm_compute1/lib/linux-armv7a-neon/libarm_compute_core.so 

5、终于编译成功
树莓派编译深度模型_第2张图片

你可能感兴趣的:(Linux)