当我们将可执行文件与ld
链接时,我们给出了可执行文件所依赖的库列表。这是这些库的位置信息的唯一来源,还是有关在目标文件中作为元数据存储的从属库的首选版本的一些信息?
具体问题是:如果我链接两个依赖于第三个库lA
的依赖库lB
和lC
,并在链接上放置对这些库的引用线。似乎lA
中的C ++类方法调用lC
的不同版本而不是lB
中的类方法。这怎么可能?我通过查看gdb
中的回溯来了解这一点。
答案 0 :(得分:1)
他们可能会。 Dialogs.ShowMessage(Format('Frac1=%f Frac2=%f', [Frac(Frac(135.45)*100), Frac(45)]));
用于符号解析。它们还包括完整的对象名称,可能包含版本号,如果库正确使用版本控制,则符号实际上不会相互冲突。
我可以将您发送到我的博客,了解对DT_RPATH
和DT_RPATH
的一些看法: