ldd 依赖项
我正在Linux(Ubuntu 11)下编译2个共享库(“A”,“B”),
lib“B”正在使用lib“A”导出的函数(与-lA静态链接)
但是当我运行ldd时在“B”上我只有*
linux-gate.so.1 => (0x004c0000) libc.so.6
/lib/i386-linux-gnu/libc.so.6 (0x00abf000)
/lib/ld-linux.so.2 (0x00679000)
我看不到我的“A”依赖性!?
奇怪的是,我(几乎)非常确定 ldd 用于显示所有静态依赖项!?
I'm compiling 2 shared libraries ("A", "B") under Linux (Ubuntu 11)
The lib "B" is using exported function from lib "A" (linked statically with -lA)
But when I'm running ldd on "B" I just have*
linux-gate.so.1 => (0x004c0000) libc.so.6
/lib/i386-linux-gnu/libc.so.6 (0x00abf000)
/lib/ld-linux.so.2 (0x00679000)
I cannot see my "A" dependency !?
Strange, I was (almost) pretty sure ldd used to display ALL static dependencies !?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
来自
man ldd
静态库没有运行时依赖关系,因为它们是静态链接的,
From
man ldd
There is no run-time dependencies for static libraries, since they were linked statically,
您需要动态链接
libA.so
到libB.so
,即使用类似的东西构建libB.so
(假设没有
libA.a
存在,只有一个libA.so
)然后您可以使用
ldd libB.so
检查它是否链接了libA.so
例如,查看大多数 GUI 库,例如
/usr/lib/libQtGui.so.4
或/usr/lib/libgtk-3.so
,例如You need to link dynamically
libA.so
intolibB.so
, that is to buildlibB.so
with something like(assuming no
libA.a
exist, only alibA.so
)And then you could use
ldd libB.so
to check that it does linklibA.so
Look for example into most GUI libraries like
/usr/lib/libQtGui.so.4
or/usr/lib/libgtk-3.so
, e.g.