有些人正在链接共享对象文件,以便他们的NEEDED列表中没有条目,并且在将这些SO文件链接到二进制文件时,将所有SO文件的传递依赖关系放入创建的二进制文件的NEEDED列表中,而忽略不计二进制文件是否真的需要那些SO文件。
以前没有将所需的SO文件链接到某个SO文件的行为称为 underlinking ,后者将过多的SO文件链接到某个二进制文件的行为称为 overlinking 。
我正在与我的同事讨论构建或运行应用程序或其SO文件时,构建应用程序及其SO文件的方案是否会产生任何性能成本。例如,PLT的动态符号解析可能需要额外的成本吗?有人可以对此有所了解吗?
答案 0 :(得分:2)
它肯定会改变符号查找的性能,可能更糟。 ELF符号解析是从可执行文件本身的符号表开始的广度优先搜索,然后是可执行文件的DT_NEEDED库的符号表,然后是那些库的DT_NEEDEDs符号表等。通过重载链接主可执行文件,您可能会强制更多符号查找迭代更多库的符号表。