在编译arm开发板的过程中遇到的几个已解决的小问题

        在今年的年中我在接手一个小项目的时候,在使用opencv库的时候遇到了好几个头疼的问题,花费了好长一段时间才慢慢花时间解决了,现在就记录一下遇到的问题以及解决方案

一、在交叉编译过程中遇见以下报错的时候:

报错显示动态库 未能识别,文件的调用被截断,这个库文件的交叉编译是在别的地方编译好,然后我再压缩复制解压过来的,在我使用这个文件的时候,qt项目make编译就出现了这样的问题。我回去库的位置使用

ls -l

查看了库的大小,发现库的大小是没有出现问题的,显示的跟我交叉编译过后的大小是一样的,当时我就又重新复制了一次,发现还是不行,然后我就把那个库给删除掉,将同样库的名字建立一个软链接,如上图所示,发现还是不行。到后面我突然想到,是不是在解压的过程中出现了问题,我就使用file命令:

file libopencvxxx

查看了对应库的文件属性,就发现了问题

正常来说动态库使用file命令查看之后完整的信息是会有一段编码的,就像这样:

 但是我解压出来的库的文件属性却是这样的:

这很明显就不对,出现问题了,然后我就是使用U盘将原本编译好的动态库直接复制过来,再make编译,成功!

二、在qt项目里面使用了opencv后,出现这样的报错:

 说我main.cpp这个文件里面,cv这个命名空间里面的cv::String::deallocate()以及后面的几个函数没有定义,我去我写的main.cpp函数里面找,发现我根本就没有调用到这几个函数,为什么也报我的错,我就一开始想是不是我哪里的函数用到了当作参数,发现也是没有,然后一位同行的前辈在无意中说出来的一句话提醒了我:“怎么还分版本呢?”我就突然想起来,对啊,我这台电脑安装的opencv跟我编译的opencv的版本是不一样的,会不会是这个问题?我又去我交叉编译的电脑上面将跟库同一个版本的opencv2下的所有头文件,包括cv命名空间定义的文件全部复制过来,将原本添加在qt工程里面但是版本不一样的文件替换掉,再次编译,成功!

三、不同平台版本的opencv并不通用

        我在最开始使用opencv来写qt工程的时候,我用的是Windows系统编译的opencv,但是我的工程是需要放在arm开发板上面的,在编译的过程中就会出现这样的问题:

 编译器显示库的格式不可识别,识别不了,当时也是搞了很久,重新编译也试过,但是就是不行,后面上网查找发现在不同的平台上使用的程序应该是目标平台的版本,就需要使用对应的交叉编译链来交叉编译opencv生成arm版本的opencv库,如果你不知道你的库的版本是多少,你可以使用file+库名字的命令来查看库的版本,例如我想在arm开发板上面跑的程序就需要用到arm版本的库,使用了交叉编译好的库之后就编译成功了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值