
opencv riscv的交叉编译与测试标签 RISCV opencv 编译器目录编译与测试环境riscv交叉工具链安装说明qemu-riscv64安装说明交叉编译opencvcmake-gui选项遇到的错误测试opencv-riscv测试程序编译命令运行运行结果测试时遇到的错误编译与测试环境opencv版本opencv4.2opencv4.2下载地址GitHub - opencv/opencv at 4.2.0riscv交叉编译工具链riscv64-unknown-linux-gnu-gcc/griscv交叉编译链地址GitHub - riscv-collab/riscv-gnu-toolchain: GNU toolchain for RISC-V, including GCC测试环境qemu-riscv64qemu-riscv地址GitHub - riscvarchive/riscv-qemu: QEMU with RISC-V (RV64G, RV32G) Emulation Supportriscv交叉工具链安装说明# 拉取编译链代码需要科学上网 git clone --recursive https://github.com/riscv/riscv-gnu-toolchain # 安装所需依赖 sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev # 设置环境路径 如将/opt/riscv作为工具链安装路径将/opt/riscv/bin加入环境变量路径中 # 编译 ./configure --prefix/opt/riscv make linux12345678910qemu-riscv64安装说明# 安装所需依赖 sudo apt-get install gcc libc6-dev pkg-config bridge-utils uml-utilities zlib1g-dev libglib2.0-dev autoconf automake libtool libsdl1.2-dev # 拉取代码 git clone https://github.com/riscv/riscv-qemu cd riscv-qemu git submodule update --init pixman # 编译 ./configure --target-listriscv64-linux-user [--prefixINSTALL_LOCATION] make1234567891011交叉编译opencv创建bulid目录打开cmake-gui设置soucecode和bulid路径cmake-gui选项参考嵌入式开发之Opencv(一)交叉编译可以根据需要选择需要build的功能模块打开Advancd选项, 我另外设置了这些选项CMAKE_BUILD_TYPE ReleaseCMAKE_EXE_LINKER_FLAGS -lrt -lpthreadCMAKE_INSTALL_PREFIX /usr/lcoal/riscv/open-riscv # 自定义安装目录默认是/usr/localConfigure生成之后进入bulid目录make即可遇到的错误错误1找不到zlib.hfatal error: zlib.h: No such file or directory1解决办法用riscv工具链交叉编译zlib库并install到riscv工具路目录处交叉编译zlib库参考zlib的交叉编译错误2找不到进程库../opencv3.4.0/3rdparty/protobuf/src/google/protobuf/stubs/common.cc:51:2: error: “No suitable threading library available.”1解决办法法1推荐cmake-gui时打开Advancd选项设置CMAKE_EXE_LINKER_FLAGS 为 -lrt -lpthread图片: https://uploader.shimo.im/f/0XQImbqaFUgUShde.png法2参考Tina openwrt平台下opencv交叉编译-huangea的博客错误3类型转换错误../opencv-4.1.1/modules/imgcodecs/src/grfmt_jpeg.cpp:224:58: error: invalid conversion from ‘uchar* {aka unsigned char*}’ to ‘const JOCTET* {aka const char*}’ [-fpermissive] state-source.pub.next_input_byte m_buf.ptr();123相关链接cross compile arm-linux show errors invalid conversion · Issue #15308 · opencv/opencv · GitHub同一个错误解决办法之前cmake-gui时按默认选中的bulid模块编译时会遇到这个错后来选择部分功能模块bulid就没遇到这个错了。暂时随缘吧测试opencv-riscv测试程序#include stdio.h #include opencv2/opencv.hpp #include opencv2/imgproc/imgproc.hpp #include opencv2/imgproc/types_c.h using namespace cv; //将图片灰度化并保存 int main() { Mat image; image imread(./img.jpg); if(!image.data) { printf(No image data \n); return -1; }else{ printf(read the image!\n); } Mat dst; cvtColor(image,dst,CV_BGR2GRAY); imwrite(dst.jpg, dst); printf(change success!\n); return 0; }123456789101112131415161718192021222324编译命令riscv64-unknown-linux-gnu-g DisplayImage.cpp -o DispalyImage -I /usr/local/riscv/opencv-riscv/include/opencv4 -L /usr/local/riscv/opencv-riscv/lib -lopencv_core -lopencv_imgcodecs -lopencv_imgproc -lz #-I Dir 指定include目录在该目录下寻找引用的头文件 #-L Dir 指定库文件目录在该目录下寻找链接的库文件12345运行编译成功在qume-riscv64上运行qemu-riscv64 -L /opt/riscv/64/sysroot DisplayImage1运行结果生成灰度化的图片测试时遇到的错误错误1找不到头文件fatal error: opencv2/opencv.hpp: No such file or directory1解决办法编译的时候加上-I /usr/local/riscv/opencv-riscv/include/opencv4 指定安装的opencv的include目录错误2找不到库文件ld: cannot find -lopencv_core ld: cannot find -lopencv_imgcodecs ...123解决办法编译的时候加上-L /usr/local/riscv/opencv-riscv/lib 制定opencv库文件的目录错误3undefined reference to gzopen undefined reference to gzclose undefined reference to gzgets undefined reference to gzputs1234问题与解决办法缺少zlib库引起的 编译链接时加上 -lz由于zlip库之前安装在riscv工具链的目录而编译测试文件时链接的目录为opencv的目录建议把zlib重新安装在opencv的目录里面不然链接时可能会找不到zlib。错误4undefined reference to symbol _ZTVN10__cxxabiv117__class_type_infoECXXABI_1.31解决办法用riscv64-unknown-linux-gnu-gcc编译会遇到这个错改为riscv64-unknown-linux-gnu-g编译错误5编译测试文件成功后运行时遇到加载动态库时找不到动态库文件DisplayImage:error while loading shared libraries: libopencv_core.so.4.2: cannot open shared object file: No such file or directory1解决办法设置环境变量增加动态库目录路径到该变量中再重新运行export LD_LIBRARY_PATH/usr/local/riscv/opencv-riscv/lib:$LD_LIBRARY_PATH版权声明本文为ALLap97原创文章遵循 CC 4.0 BY-SA 版权协议转载请附上原文出处链接和本声明。本文链接opencv riscv的交叉编译与测试_riscv-newlib库 opencv-CSDN博客