seetaface非法指令集
项目中使用了seetaface6来做人脸识别,程序在虚拟机和服务器中都可以跑起来,所以当时就认为没什么问题了。谁知道移植到网关中运行后,直接崩溃,非法指令集。两者的差别是什么呢?服务器和网关都是基于X86架构的,虚拟机和服务器都是64位的机器,而网关是32位的机器,难道需要编译成32位的程序?为了验证这个想法,重新编译所有的seetaface的库,尤其是那个tennis,让人蛋疼,一搞就是5个小时
项目中使用了seetaface6来做人脸识别,程序在虚拟机和服务器中都可以跑起来,所以当时就认为没什么问题了。谁知道移植到网关中运行后,直接崩溃,非法指令集。
两者的差别是什么呢?
服务器和网关都是基于X86架构的,虚拟机和服务器都是64位的机器,而网关是32位的机器,难道需要编译成32位的程序?
为了验证这个想法,重新编译所有的seetaface的库,尤其是那个tennis,让人蛋疼,一搞就是5个小时。还有那个opencv,也让人蛋疼。
最后编译出来了,结局让人心碎,还是非法指令集。
这也不行啊,怎么办呢?明显是seeta库的原因了,因为即使我的代码中,只print hello world,也会报非法指令集这个故障。只能再看seetaface的帮助文档了。这次仔细看了,关于指令集的描述如下:
因为网关的cpu是pentium的,而默认编译出来的库,都是调用tennis这个库,那是不是需要链接的时候,将默认链接tennis改为链接tennis_pentium?
再次重新编译seetaface几个主要的库,不需要编译tennis的话,速度还是很快的。再次重新链接,错误不一样了,这次报错如下:
再次看指令集相关部分的描述,
然后看了一下网关CPU的指令集,只有SSE,与打印信息一样。
........................................
更新一下,昨天将赛扬的cpu换成了i3的,再次跑了一下程序,也不报非法指令了,而且速度挠挠的
更多推荐










所有评论(0)