免费注册 查看新帖 |

Chinaunix

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

[Linux] 运行时(Runtime)函数调用问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-23 21:05 |只看该作者 |倒序浏览
本帖最后由 leopoldfreeman 于 2012-09-23 21:07 编辑

最近做一个项目需要调用到openssl (libcrypto.a)及oracle这两个库。

编译通过,但运行时收到SIGSEGV,gdb bt 后如下:

(gdb) bt
#0  0x0811448d in BN_set_word ()
#1  0x00da8d05 in BN_mod_inverse () from /data/oracle/lib/libnnz10.so
#2  0x08101c9e in BN_MONT_CTX_set ()
#3  0x08101ffe in BN_MONT_CTX_set_locked ()
#4  0x080eddda in dsa_sign_setup ()
#5  0x080edad4 in dsa_do_sign ()
#6  0x080ed282 in DSA_sign ()

很明显,libcrypto.a中的BN_MONT_CTX_set ()调用了oracle库libnnz10.so中的BN_mod_inverse ()导致了问题。解决也不难,小改下openssl的代码就可以了(rename)。

我想问的是,有没有其他方法可以解决这个问题(让libcrypto.a优先调用自身的函数,而不是另外一个库中的函数),谢谢。

论坛徽章:
0
2 [报告]
发表于 2012-09-23 21:05 |只看该作者
以前有个账号的,好久不登陆,密码忘了,邮箱忘了。。。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
3 [报告]
发表于 2012-09-24 11:30 |只看该作者
让libcrypto.a优先调用自身的函数,而不是另外一个库中的函数


咋调到oracle去了... 好神奇!

论坛徽章:
0
4 [报告]
发表于 2012-09-24 19:41 |只看该作者
调整链接顺序就解决了。

这样是OK的:
-lcrypto -lnnz10


这样是有问题的:
-lnnz10 -lcrypto

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
5 [报告]
发表于 2012-09-24 20:23 |只看该作者
原来同时链入两个库, 恩.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP