RV1126交叉编译OPENCV的各种坑

准备编译选项

传统Linux环境下的RV1126,最重要的选择正确的编译工具链。版本为arm-gcc-8.3。即便ubuntu能够直接apt-get安装gcc-arm-8也不能正常使用。因此,提前准备好工具链的路径和环境变量。

cmake -D CMAKE_BUILD_TYPE=RELEASE       -D CM
AKE_INSTALL_PREFIX=./install       -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.4/modules       -D BUILD_SHARED_LIBS=OFF       -D CMAKE_SYSTEM_NAME=Linux       -D CMAKE_C_COMPILER=/opt/gcc-arm-8.3/bin/arm-linux-gnueabihf-gcc       -D CMAKE_CXX_COMPILER=/opt/gcc-arm-8.3/bin/arm-linux-gnueabihf-g++       ..

编译

make -j$(nproc)

zlib.h: No such file or directory

请添加图片描述
是由于anaconda虚拟环境改变了原有的环境变量。除了推出虚拟环境,还需要删除cmake文件进行重新配置,否则仍会以之前的配置进行编译:

conda deactivate
rm -r ../build/*
cmake -D CMAKE_BUILD_TYPE=RELEASE            \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.4/modules      \
-D BUILD_SHARED_LIBS=OFF       \
-D CMAKE_SYSTEM_NAME=Linux      \
-D CMAKE_C_COMPILER=/opt/gcc-arm-8.3/bin/arm-linux-gnueabihf-gcc       \
-D CMAKE_CXX_COMPILER=/opt/gcc-arm-8.3/bin/arm-linux-gnueabihf-g++       \
..

undefined reference to `png_do_expand_palette_rgb8_neon‘

此为低版本编译器编译高版本opencv会遇到的问题,具体原因未考证。
打开opencv源码目录,编辑文件 gedit 3rdparty/libpng/pngpriv.h
将原本的第130行注释掉,改成下面的样子

 /* #  if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \ */
 # if defined(PNG_ARM_NEON) && (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \
    defined(PNG_ALIGNED_MEMORY_SUPPORTED)
 #     define PNG_ARM_NEON_OPT 2
 #  else
 #     define PNG_ARM_NEON_OPT 0
 #  endif
 #endif

继续进行编译:

make -j$(nproc)

dc1394.h: No such file or directory

failed Expression evaluates to false G_STATIC_ASSERT

次问题为没有添加linux系统选项环境所致。如果之针对问题去除依赖,会产生更多报错。正确的解决方法是添加选项:

 -D CMAKE_SYSTEM_NAME=Linux  

最好按照文章开头的cmake配置进行编译。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值