如果您曾尝试在任何C ++程序上使用 nm 实用程序,您可能已经注意到许多符号被标识为“V”或“W”。两者都是不同类型的弱符号。
现在,在可执行文件中有大量的弱符号是不好的,因为在运行时动态链接器将尝试解决所有问题。我认为通过在链接可执行文件时强制执行一个简单的约定可以节省大量时间:
这个黑客对我来说似乎很安全,因为:
在我尝试与binutils开发人员讨论这个问题之前,我错过了一个很大的错误吗?
答案 0 :(得分:0)
我没有看到任何可以阻止你在工作中描述的内容。
然而,我确实不知道这是否值得做。而且我很确定你的“binutils开发者”也会这么想。所以我建议你看一些事情:在典型情况下,在可执行文件和动态库中定义的符号是多少?
由于很可能仍然存在大量未在可执行文件中定义的弱符号,您实际节省了多少时间?
现有程序的一些例子已被改进或至少是对“对于应用程序X而言,这么多时间用于平均查找弱符号,这是潜在的收益?”
这就是我作为binutils开发者所寻找的东西[我不是其中之一,但如果我是]。