一开始的问题是编译完程序,但是部分工具没有编译出来。
主要的问题是:
1. ncnn2in8 程序没有编译出来:主要原因应该是cmakelists.txt文件中对于的模块没打开on,或者这个模块没加进去编译:
添加以下
-DNCNN_BUILD_EXAMPLES=ON -DNCNN_BUILD_TOOLS=ON -DNCNN_BUILD_BENCHMARK=ON
2. onnx2ncnn 以及caffe2ncnn 程序没编译出来:主要问题在于protobuf 库没安装上.
我是参考了这位博主的笔记,先编译x86然后再交叉编译。
ubuntu20.04上交叉编译libprotobuf-CSDN博客
我在git上下载了3.20.0版本,git clone -b v3.20.0 xxxxxx
cd protobuf
git submodule update --init --recursive 这步主要是make check测试用,防止报错
运行./autogen.sh
mkdir build 最好新建目录,编译到这个目录中,以免和其它的文件冲突
./configure --prefix=./build
make -j16
make install
以上先编译了x86平台的protobuf。
然后再交叉编译arrch64 平台:
换个目录,重新git一份源码,不能在原来的地方编译;
cd protobuf
git submodule update --init --recursive
./autogen.sh
mkdir arrch_build
./configure
--host=aarch64-rockchip-linux-gnu 交叉编译器的名字
--prefix=/home/yaoxingtian/protobuf/arrch_build
CC=../aarch64-rockchip-linux-gnu -gcc 编译器路径
CXX=./aarch64-rockchip-linux-gnu -g++
--with-protoc=..//protobuf/build/bin/protoc x86上编译的文件路径
make
make install
3. 交叉编译ncnn 报错:bin/ld: /usr/local/lib/libprotobuf.a: error adding symbols: file in wrong format
这个问题是编译的时候查找路径不是arrch平台编译的libprotobuf,而是用了x86编译的libprotobuf。我不知道路径怎么改,我直接在/usr/local/lib/ 替换了arrch64 的libprotobuf.a 。
4. 报错zlib 库找不到
我借鉴一下教程,编译好zlib后添加环境变量到bashrc文件:
export ZLIB_ROOT=./Documents/zlib-1.3.1
source ~/.bashrc
【开源库编译 | zlib】 zlib库最新版本(zlib-1.3.1)在Ubuntu(Linux)系统下的 编译 、交叉编译(移植)_zlib交叉编译-CSDN博客