问题描述:
环境:使用python与c混合进行ARM嵌入式开发,使用python2.7.so中c接口调用python脚本中函数,并交叉编译到ARM开发板使用。
问题:在本地linux X86平台服务其进行交叉编译时无报错、无告警。但将其放到ARM板上运行时出现以下错误提示:
ERROR:root:code for hash md5 was not found.
Traceback (most recent call last):
File “usr/lib/python2.7/hashlib.py”, line 147, in File “usr/lib/python2.7/hashlib.py”, line 109, in __get_openssl_constructor
File “usr/lib/python2.7/hashlib.py”, line 97, in __get_builtin_constructor
ValueError: unsupported hash type md5
…
问题原因:查看原因发现是因为我写的python脚本中导入的某个三方库中使用了md5模块,但在插入md5模块时报错。查看python源码,发现其报错地方写明此处使用的是c函数,并允许c抛出异常,因此将寻找问题原因的侧重点放到了C库中。源码如下:
查看本地Makefile,发现其中只有一个安全相关的库,名为:libcrypto.so。查看ARM板中发现有该库,因此怀疑库的版本对应不上,经查看发现本地编译服务器的库与ARM板的库版本果然不一样,将编译服务器上的so替换道ARM板对应位置后程序运行正常。
原创文章,转载请注明出处。