【发布时间】:2011-11-23 16:14:04
【问题描述】:
我正在 Linux (Ubuntu 11) 下编译 2 个共享库(“A”、“B”)
库“B”正在使用库“A”中的导出函数(使用 -lA 静态链接)
但是当我在“B”上运行 ldd 时,我只有*
linux-gate.so.1 => (0x004c0000) libc.so.6
/lib/i386-linux-gnu/libc.so.6 (0x00abf000)
/lib/ld-linux.so.2 (0x00679000)
我看不到我的“A”依赖项!?
奇怪,我(几乎)很确定 ldd 用于显示所有静态依赖项!?
【问题讨论】:
-
首先,静态链接将代码集成到生成的二进制文件中。其次,允许链接器优化未使用的定义(即,您应该从引用的库中获取至少一个外部对象的地址)
-
好的,找到了...我在makefile中放错了-lA。对于像 gcc 这样的软件来说,这样的事情真是太棒了!
标签: linux gcc shared-libraries ldd