链接器如何知道在运行时应该解析哪些符号?

时间:2010-10-05 12:59:20

标签: c++ shared-libraries shared-objects

链接器如何知道应在运行时解析哪些符号?特别是我感兴趣的是共享对象文件携带的信息,指示链接器在运行时解析符号。动态符号解析如何在运行时工作,即可执行文件将如何查找符号,以及定义了多个具有相同名称的符号?

如果文件只是静态链接会发生什么,但是它会在运行时作为共享库的一部分动态链接?可执行文件将使用哪个符号?换句话说,是否可以通过将这些符号链接到共享库来覆盖可执行文件中的符号?

有问题的平台是SUN OS。

3 个答案:

答案 0 :(得分:2)

尝试以下链接。我希望它能回答你的问题

http://www.linuxjournal.com/article/6463

答案 1 :(得分:2)

Linux Journal查看此文章。有关更多信息 - 可能与Windows,AIX,OSx等特别相关 - 我会推荐关于Linker (computing)的维基百科文章及其中的参考文献。

答案 2 :(得分:0)

如果文件是静态链接的,则没有运行时解析。如果共享对象动态或静态地链接到同一个库,则链接到库的版本将仅影响库中执行的代码。如果您链接到同一个库中不兼容的两个不同版本并来回移动数据,则会导致问题。