问题描述
-
A.so
由第三方提供 -
B.so
依赖于A.so
,但在 makefileB.so
没有链接到A.so
(不是动态的,也不是 静态)。 -
C
是B
库的测试可执行文件。在里面 makefile,C
动态链接到B
和A
。 -
ldd B.so
- 不依赖于预期的 A.so
-
ldd C
- 依赖于 A.so 和 B.so
-
make
B
可以很好地编译和构建 B。 -
make
C
可以很好地编译和构建B
和C
。 -
./C
运行没有问题(这让我很惊讶) -
问题:
-C
可以在运行时将A.so
的位置传递给B
吗?
- B.so 是否真的需要针对 A.so 进行链接,或者如果其中一个依赖项在链接时间内为它解决了这个问题就可以了。
- 如果是这样,在C
处解决的依赖关系的顺序可能会导致B.so
出现问题。例如,如果C
在B.so
之前解析A.so
B 将失败。但是如果它首先解析A.so
,那么B.so
会找到它需要的东西。或者已知的加载顺序,这正是ldd
命令的输出中显示的内容
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)