cuda11.8编译opencv4.6

工作需求,记录过程。
还是要将工程移植到未联网的测试机的问题。可见前篇工程部署。本来以为轻车熟路,结果同事直接给了个安装高版本cuda……然后opencv也因为用的是cuda10.2编译的不能用了。方法总比困难多。主要用来记录编译opencv并移植,以及编译工程文件时遇到的一些问题。

安装opencv

这一模块非常感谢同事,写了文档给了安装包,但是由于cuda版本不一致的问题,还是有点新的操作。我记录如下。安装opencv-4.6.0的环境有网。
安装环境:

cuda 11.8
cudnn 7.6.4
  1. 安装ffmpeg和yasm,直接下载源码,步骤都是解压、configure、make和install。针对ffmpeg,踩到一个坑:
/usr/bin/ld:cann't find -lpostproc

解决,在configure中加上enable gpl:
参考

./configure --enable-shared --enable-postproc --enable-gpl
  1. 离线准备ippicv和v0.1.1.f.zip,分别在对应的cmake文件中,将文件位置修改成对应的存储位置。(ippicv: line 42;v0.1.1f: line 10)
  2. 编译安装:在cmake中要保证ffmpeg对应项均为yes。这里的坑是我对应的都为no,看了挺多办法,都没解决,然后尝试查询了下,发现是我没安装pkg-config的问题,因此:
sudo apt-get install pkg-config
  1. 继续make和install,检测安装成功后进行配置即可。这里不详述,因为已经有很多写的较为详细的文章了。

移植opencv

要从联网环境移植到离线环境,我在这里直接将build文件夹中的include和lib打包了,新环境中解压,cmakelists中直接写该文件夹的地址即可。比我想象中的容易。

编译工程问题

  1. cblas.h文件没有找到的问题。
fatal error: cblas.h: No such file or directory #include <cblas.h>

我这里是有编译好的第三方库,因此直接在报错的脚本上写的是全地址。如果确定电脑上有该文件,写全地址可解决该问题。其他问题类似找不到包或者找不到文件的问题,首先确定无论第三方库还是本地,只要有这个包,就可以在cmakelists中指定并link。

  1. cmake的问题解决完了就有找不到软连接的问题。一堆包cannot find -l**** 。
    参考
sudo find / -name "lib****.so"
cd /path/lib****.so
sudo cp lib****.so /usr/lib
  1. make后在运行可执行文件时,可能有一些库还是没有(毕竟不是在本地下载的,只能缝缝补补)。因此,从本地机上下载相应的so文件,放在可执行文件目录下即可,然后用ldd指令查询,没有出现not found基本就可以正常使用了。

总结

两天时间完成了之前一周左右的工作,我可真棒!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值