免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4709 | 回复: 1
打印 上一主题 下一主题

python、openssl、C/C++的问题 [复制链接]

论坛徽章:
3
天蝎座
日期:2014-10-25 13:44:312015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:48:31
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-27 00:26 |只看该作者 |倒序浏览
背景如下:
——————————————
python:2.6.6
django:忘记版本
openssl:下载最新版本1.0.0源代码编译为crypt.a,ssl.a(这2个.a文件没有使用)
项目代码C/C++:编译为xyz.so,其中把openssl编译生成的.o链接进来
OS openssl:版本0.9.8

——————————————
验证如下:
A、Linux系统,nginx、django后台python通过ctypes调用xyz.so的项目代码的API_xyz(),API_xyz调用crypto的某个源文件的function_abc(),出现段错误
B、Linux系统,python直接通过ctypes调用xyz.so的项目代码的API_xyz(),API_xyz调用crypto的某个源文件的function_abc(),出现段错误
C、Linux系统,C调用xyz.so的项目代码API_xyz(),API_xyz()调用crypto的某个源文件的function_abc(),正常
D、windows环境,python直接通过ctypes调用xyz.so的项目代码的API_xyz(),API_xyz调用crypto的某个源文件的function_abc(),正常
E、windows环境,C调用xyz.so的项目代码API_xyz(),API_xyz()调用crypto的某个源文件的function_abc(),正常

结论如下:
——————————————
xyz.so,在windows环境政策
xyz.so,在Linux环境
  python->不正常
  C/C++->正常


通过修改openssl的1.0.0,增加printf(),
发现
A、linux+python环境,几个函数不执行打印,调到系统的0.9.8的函数去了(可以肯定),其他几个函数调用到1.0.0
B、其他环境,都调用到1.0.0


大家帮忙分析一下(可能有人碰到过类似问题)
openssl 1.0.0是通过.o链接到xyz.so的,为何在linux+python环境部分函数会调用到0.9.8里面去,linux+C的环境却不会?

论坛徽章:
0
2 [报告]
发表于 2013-10-30 18:04 |只看该作者
本帖最后由 yang200218 于 2013-10-30 18:05 编辑

你编译和运行的机器 是同一台机器吗? 如果不是同一台机器,那么openssl的shared library 的版本是一样吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP