唉,搞了好久,先说一下我的目的,我手头有一个opencv的算法,想要放在arm版子环境下运行。

目标版:飞凌的OK6410A(自带的linux3.0.1)(自带的QTE4.7.1)

PC:虚拟机 Ubuntu16.04 (32位)

交叉编译器:飞凌提供的arm-linux-gcc 4.3.2

opencv版本:2.4.9

下面就是蛋疼的移植过程,具体过程跟网上一样,解压opencv的源码,用cmake-gui图形界面,我也是按照着网上的教程来,详细的步骤我就不说了,讲一下我遇到的问题。首先我按照着 https://blog.csdn.net/guet_kite/article/details/78667175 这位大神的博客来交叉编译我的opencv,到这一步的时候,我看网上很多教程都说要填Linux,否则会出很多问题,我于是就跟着填了Linux,记录在ARM的ok6410环境下Opencv的移植过程

然后成功编译出了库文件。

记录在ARM的ok6410环境下Opencv的移植过程

然后按照上面博主的说法,把这些库文件拷贝到开发版根目录的lib下,然后在qt里面写了一个简单的测试程序,就是读取一张图片,然后显示出来,中途编译的时候,也遇到了跟博主一样的问题,后来按照博主的办法,把这些库文件拷贝到交叉编译器的bin下面,就可以成功编译出二进制文件,这时候我满心欢喜的把二进制文件拷贝到版子下面执行。  ./test -qws,蛋疼的错误出现了。

[[email protected]]# ./test -qws .test:error while loading shared libraries: /lib/libopencv_ calib3d.so.2.4: ELF file version does not match current one

(编译的二进制库文件版本不匹配)

然后各种百度,发帖到处询问,也没有结果,然后我实在没办法,突然灵机一动,想着重新编译一下我的opencv,在这一步的时候:记录在ARM的ok6410环境下Opencv的移植过程

我填了arm-linux,然后编译出来的库文件如图:

记录在ARM的ok6410环境下Opencv的移植过程

我把这些库文件拷贝到板子根目录的lib下,再次运行我的程序,提示,找不到库文件,于是我按着qt里面的配置:记录在ARM的ok6410环境下Opencv的移植过程

在板子的/usr/local 下新建了install_opencv文件夹,里面又新建了lib文件夹,把编译出来的库全部拷贝了进去,再次运行我的代码,于是,就成功了,贴图为证:记录在ARM的ok6410环境下Opencv的移植过程


然后我满心欢喜的想着opencv终于移植成功了,终于可以移植我的算法了,可是蛋疼的事情又出现了

记录在ARM的ok6410环境下Opencv的移植过程

我的算法是基于视频处理的,然后刚开始读取视频的时候,板子就开始报错了:

记录在ARM的ok6410环境下Opencv的移植过程

也就是说我的视频读取就没有成功,现在还没有找到解决的思路,如果后面有进展,会持续更新,有大佬看出问题,也可以交流一下,我的qq:123799198

相关文章:

  • 2022-12-23
  • 2021-09-28
  • 2021-10-22
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-24
  • 2022-12-23
  • 2021-07-15
  • 2021-10-11
  • 2022-12-23
  • 2021-06-30
相关资源
相似解决方案