seetaface非法指令集

本文记录了SeetaFace6人脸识别库在32位网关上遇到非法指令集问题的排查过程。从初步怀疑指令集不兼容到更换CPU解决,详细叙述了重新编译库文件及调整配置的尝试。

项目中使用了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的,再次跑了一下程序,也不报非法指令了,而且速度挠挠的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值