全志科技
直播中

李慎梓

8年用户 1506经验值
私信 关注
[问答]

请问在交叉编译过程中引用opencv库报错的原因是什么?如何解决?

我在项目中使用了opencv,使用交叉编译工具进行编译时,链接了opencv的lib,报错如下:
attempted static link of dynamic object `/usr/local/lib/libopencv_highgui.so.4.5.4'
根据提示我尝试将tool chain 的-static标志去掉,报错如下:
usr/local/lib/libopencv_highgui.so.4.5.4: error adding symbols: file in wrong format
我开启了cmake的DEBUG模式,这是我报错前最后连接的g++ 指令
/home/david/Downloads/riscv64-linux-x86_64-20210512/bin/riscv64-unknown-linux-gnu-g++ --sysroot=/home/david/Downloads/riscv64-linux-x86_64-20210512/sysroot  -march=rv64gcvxtheadc -mabi=lp64d -mtune=c906 -DRVV_SPEC_0_7 -D__riscv_***h=1 -static -frtti -O2 -g -DNDEBUG    -rdynamic CMakeFiles/main.dir/src/main.cpp.o CMakeFiles/main.dir/src/UltraFace.cpp.o  -o main -Wl,-rpath,/usr/local/lib ncnn_build/src/libncnn.a /usr/local/lib/libopencv_highgui.so.4.5.4 /usr/local/lib/libopencv_ml.so.4.5.4 /usr/local/lib/libopencv_objdetect.so.4.5.4 /usr/local/lib/libopencv_photo.so.4.5.4 /usr/local/lib/libopencv_stitching.so.4.5.4 /usr/local/lib/libopencv_video.so.4.5.4 /usr/local/lib/libopencv_videoio.so.4.5.4 -lpthread /usr/local/lib/libopencv_imgcodecs.so.4.5.4 /usr/local/lib/libopencv_calib3d.so.4.5.4 /usr/local/lib/libopencv_dnn.so.4.5.4 /usr/local/lib/libopencv_features2d.so.4.5.4 /usr/local/lib/libopencv_flann.so.4.5.4 /usr/local/lib/libopencv_imgproc.so.4.5.4 /usr/local/lib/libopencv_core.so.4.5.4
感觉是一个比较简单的问题,但是我查阅了文档没有得到合适的帮助,如果能得到帮助将感激不尽!

回帖(3)

李渔滢

2021-12-28 13:53:04
opencv也需要交叉编译才可以链接
举报

吴民峰

2021-12-28 13:53:10
搜索关键词 buildroot 会发现新知识。
顺便看下韦东山老师这个链接:
【极简操作】使用builroot 2021一键编译生成D1 nezha 系统镜像!
https://bbs.aw-ol.com/topic/171
举报

赵伟

2021-12-28 13:53:14
好巧,我正在尝试交叉编译opencv,刚刚我看了下发现buildroot竟然支持一键操作,太棒了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分