关于arm+linux+opencv3.4.4在Ubuntu18.04上交叉编译的小记

首先,踩了两天的坑,通宵了两天,终于把交叉编译的运行环境搞完了,以下单纯是我不知道上辈子对不起谁才会出现的BUG,有些目前在某度上面没有,纯属记录,十倍开心!
第一个,在编译器的选择上,原则上选择对应的编译器,根据自己交叉编译后需要使用的嵌入式系统选择,不要盲目选择,建议先百度一下关于arm交叉编译用的编译器的一些外围知识,链接就不贴了,多的是。
第二个,选择完编译器,一定要分清楚Ubunut 是32位的还是64位的,如果是64位的而且使用的是32位的编译器(一般来说后面有i386的都是32位)一定要用apt-get下载兼容软件,这个也可以在度娘上面找到,很详细,也不贴了。
第三个,在cmake 里面configure时,如果报错提示“xxxx is not suitable for xxx”,这个其实是编译器安装的有问题,大多数是环境变量的问题,看一下环境变量,不行重启或者source一下,当在shell 输入arm按tab之后会出现对应的文件就好,也可以查版本号。
第四个,shell里面make的时候在29%左右的时候会有一个报错,#error "No suitable threading library available."这个是因为有一个define缺少了,度娘上面直接是做了一个config.h来中和,但是我试了一下效果不太好,不如直接顺着报错找到common.cc文件在里面开头加上#define HAVE_PTHREAD,就可以通过了;后面还会报错undefinrence pxxx,dxxxx,这些度娘上面都有,是因为Cmakelist .txt里面缺少配置信息。
第五个,我就在这里面爬了一个通宵,后来交叉编译QT的时候突然顿悟过来。“undefined reference to `void (anonymous namespace)::hlineResizeCn<short”(还有很多很多,大致都一样的报错,最先出现在improc的编译上,大概在49%左右),一旦出现这个提示,那么就表示编译器的选择有问题。因为Opencv的后续版本涉及到C++的东西,而C+11的标准在后面才发布,如果用低版本编译器编译就不可能过。所以此时换编译器,建议使用arm那个2014年的32位交叉编译器。
这是这几天通宵的踩坑记录,踩坑一时爽,一直踩坑一直爽!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值