免费注册 查看新帖 |

Chinaunix

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

动态链接库的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-21 09:49 |只看该作者 |倒序浏览
10可用积分
qca是qt的一个第三方库,qca-ossl是qca的一个插件,需要openssl的支持。

在centos5.2(A机)下编译一个使用qca-ossl来加密的函数,测试通过。(这个函数会先检测系统是否支持aes,支持的话再继续)

然后复制这个程序和相关动态库到另外一台centos5.2(B机),程序是可以运行,但提示系统不支持aes。

通过ldd可以知道,这个程序是不缺少库的。(出现同样的提示,在win下,直接复制dll到运行目录即可解决。)

但为什么在linux还是出现上述提示呢?


如果有有差异的话,在A机下,ldd的结果比在B机下的结果多了一行

linux-gate.so.1  => (0x009a2000)


希望大家帮忙看看,谢谢。

[ 本帖最后由 diyself 于 2009-12-21 09:51 编辑 ]

最佳答案

查看完整内容

那看来只有strace慢慢看了先env对比一下环境变量是否一样特别注意一些LD打头的变量以前strace看了半天,发现是有一个LD_ASSUME_KERNEL没给设

论坛徽章:
0
2 [报告]
发表于 2009-12-21 09:49 |只看该作者

回复 #6 diyself 的帖子

那看来只有strace慢慢看了
先env对比一下环境变量是否一样
特别注意一些LD打头的变量
以前strace看了半天,发现是有一个LD_ASSUME_KERNEL没给设

论坛徽章:
0
3 [报告]
发表于 2009-12-21 10:49 |只看该作者
应该不是缺少库,否则根本就启动不了。可能是两台机的openssl配置问题。

论坛徽章:
0
4 [报告]
发表于 2009-12-21 11:01 |只看该作者

回复 #2 gz80 的帖子

两台机的openssl都是yum安装的,没有做任何修改哦

论坛徽章:
0
5 [报告]
发表于 2009-12-21 12:24 |只看该作者
linux-gate.so.1这玩意好像本来就是不存在的,我觉得看一下环境变量吧?
然后
strace看一下运行过程
或者
设置LD_TRACE_LOADED_OBJECTS=1之后运行看结果差异

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2009-12-21 12:32 |只看该作者
linux-gate.so.1  => (0x009a2000)

这个东西不管它,

论坛徽章:
0
7 [报告]
发表于 2009-12-21 12:54 |只看该作者
原帖由 churchmice 于 2009-12-21 12:24 发表

设置LD_TRACE_LOADED_OBJECTS=1之后运行看结果差异


[root@dglg1 mnt]# export LD_TRACE_LOADED_OBJECTS=1
[root@dglg1 mnt]# ldd httpservice
        libtermcap.so.2 => /lib/libtermcap.so.2 (0xb7f7e000)
        libdl.so.2 => /lib/libdl.so.2 (0xb7f7a000)
        libc.so.6 => /lib/libc.so.6 (0xb7e35000)
        /lib/ld-linux.so.2 (0xb7f89000)


[root@dglg1 mnt]# ./httpservice
        libqca.so.2 => /usr/lib/libqca.so.2 (0xb7e26000)
        libqca-ossl.so => /usr/lib/libqca-ossl.so (0xb7de0000)
        libssl.so.6 => /usr/lib/libssl.so.6 (0xb7d99000)
        libcrypto.so.6 => /lib/libcrypto.so.6 (0xb7c58000)
        libQtNetwork.so.4 => /usr/lib/qt4/lib/libQtNetwork.so.4 (0xb7b2f000)
        libQtCore.so.4 => /usr/lib/qt4/lib/libQtCore.so.4 (0xb7889000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb7871000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7788000)
        libm.so.6 => /lib/libm.so.6 (0xb7761000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7755000)
        libc.so.6 => /lib/libc.so.6 (0xb7610000)
        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb75e2000)
        libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb754c000)
        libcom_err.so.2 => /lib/libcom_err.so.2 (0xb7549000)
        libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb7523000)
        libresolv.so.2 => /lib/libresolv.so.2 (0xb7510000)
        libdl.so.2 => /lib/libdl.so.2 (0xb750c000)
        libz.so.1 => /usr/lib/libz.so.1 (0xb74f8000)
        libgthread-2.0.so.0 => /lib/libgthread-2.0.so.0 (0xb74f3000)
        librt.so.1 => /lib/librt.so.1 (0xb74ea000)
        libglib-2.0.so.0 => /lib/libglib-2.0.so.0 (0xb744c000)
        /lib/ld-linux.so.2 (0xb7f35000)
        libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0xb7443000)
        libkeyutils.so.1 => /lib/libkeyutils.so.1 (0xb743f000)
        libselinux.so.1 => /lib/libselinux.so.1 (0xb7427000)
        libsepol.so.1 => /lib/libsepol.so.1 (0xb73e1000)


两台电脑上面的结果和上述的差不多,差异的就是后面的地址而已

[ 本帖最后由 diyself 于 2009-12-21 13:02 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2009-12-21 14:31 |只看该作者
原帖由 churchmice 于 2009-12-21 14:21 发表
那看来只有strace慢慢看了
先env对比一下环境变量是否一样
特别注意一些LD打头的变量
以前strace看了半天,发现是有一个LD_ASSUME_KERNEL没给设

兄弟能详细介绍一下?我执行env都没有发现有LD打头的变量,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP