这是一张吐槽贴和碰壁贴,要教程的可以看看我另一片帖子:- https://www.cirmall.com/bbs/thread-97291-1-1.html
复制代码 虽然是3.2.0,而且是树莓派的,但编译流程大致相同。也可以关注我后面的试用贴,由于试用期限要到了,来不及尝试新方法,只能先把之前碰过的那些壁先罗列一下,供诸位借鉴:
(一)闪存与空间
首先要“感谢”一下某丧、某力士之流,我们内存条的价格如下:
’
管中窥豹可见一斑,tf卡价格也水涨船高,望着午餐土,最终决定还是把手机上的老金士顿拔下来用。不过略微尴尬的是,这张8g的金士顿在安装完系统和必要的东西之后剩下一点多g,面对对于光是编译文件就要3g以上空间的opencv3.3.0+contrib模块,大感巧妇难为无米之炊!
不过,联想到之前双系统的ubuntu也是面临这种困境,结果借用win的盘成功编译,于是我也不得不泛起小心思。
(二)挂移动硬盘
香蕉派有个非常可喜的功能——sata硬盘接口,那么我们就不得不活络心思了。不过由于手上没用对应的连线,某电商平台买的也还没到,于是我决定做了一次死:
把sata转usb接到香蕉派的usb口……
结果,xrdp和ssh瞬间断开,绿灯熄灭,等我几秒后反应过来,迅速拔电、拔盘、重启,结果,绿灯依然没用亮,瞬间心里凉飕飕的,只剩下一个念头:
——派挂了
万幸的是第二天再一次重启,它又顽强地亮了起来,看来香蕉派专门弄一个sata接口也不是闲的没事干的……
(三)u盘
好吧,移动硬盘方案告吹,只能上u盘了。
16g金士顿,以前在某另一电商平台买的,现在似乎也涨了一半,再次“感谢”某丧、某力士。
把脚本中编译路径什么的改好,cmake,make
结果编译到33%左右,出现如下错误:- cmake_symlink_library: System Error: Operation not supported
复制代码 根据经验,arm编译opencv总是有莫名其妙的问题,一般再编译一次就过去了,结果……
折腾了好几天,最终也是编译不过去,这时才想起百度,一查:
“
我使用vmware,在win7机器的共享目录中编译,无法创建链接,就会提示上面的错误。 解决办法是,把源码复制到linux的本地目录中,比如/home等,在本地目录中编译就不会有这个问题。 另外,从linux中拷贝符号链接到windows机器的共享目录时,也会提示错误导致无法拷贝,也是这个原因。你可以使用xshell等将符号链接拷贝出来。 ”
嗯,好吧,我不编译contrib了。 结果证明我太天真了,即使不便宜contrib依然不够空间……
(四)使用其他arm平台编译成果
后来,我用树莓派编译的3.3.0,用盘接上,直接运行make install,结果仍然是error,告诉我系统检测错误,应该是编译的系统跟目前运行的系统不匹配吧……
然后又想,是不是博通跟全志的芯片差别有点大呢?
有用基于h2的另一款创客板编译出来的3.3.0make install一次,结果告诉我要继续探索。
(五)交叉编译——制作交叉编译链
这下没办法了,只能看看能不能交叉编译,于是先按教程把gcc5.4.0的编译链制作出来:- http://blog.csdn.net/pengfei240/article/details/52917018
复制代码 结果编译完binutils,一看目录,编译文件都不翼而飞了,在make一次又告诉我已经编译完。折腾了好久还是不行。
(六)交叉编译——编译opencv
到了这个时候,我已经折腾了两个星期,耐心消耗得差不多,无奈之下,直接下载已有的交叉编译链,不过这些编译链都是4.4.9的,听说编译出来可以兼容5.4.0?
交叉编译链下载地址:- http://www.veryarm.com/cross-tools
复制代码 然后参考这个帖子编译了一下:- http://blog.csdn.net/gatieme/article/details/49080355
复制代码 结果编译到20%多的时候老是出现math.h找不到的错误。
(七)接下来
到了这个时候,我已经完全没用脾气了,只能乖乖用- sudo apt-get install libcv-dev
复制代码 安装2.4.9版本的opencv,结果就出现我前面帖子唯独香蕉派跑opencv2的怪象。
后来仔细一向,觉得可能是我u盘用了ufs格式,想过格式化为ext4试一下,但想到贵了五成的u盘,又生怕格式化一不小心毁了我绝无仅有的移动存储设备,于是迟迟也没用动手……
最近跟同样沉溺于编译opencv3苦海的挤挤大神讨论了一下,听说ext4也有这种问题,不过把contrib移到home目录下就可以了。由于试用期期限已至,先发一张贴把以前遇到的坑罗列一下,以后成功了再补上详细教程。
|