首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化弱符号查找

优化弱符号查找
EN

Stack Overflow用户
提问于 2013-03-03 20:44:19
回答 1查看 290关注 0票数 1

如果您尝试在任何C++程序中使用nm实用程序,您可能已经注意到许多符号被识别为'V‘或'W’。两者都是不同类型的弱符号。

现在,在可执行文件中包含大量的弱符号是不好的,因为在运行时,动态链接器将尝试解决所有这些问题。我在想,在链接可执行文件时,可以通过执行一个简单的约定来节省大量时间:

  • 每当在可执行文件中创建弱符号时,如果该符号具有默认值,则将其提升为常规符号。

这次黑客攻击对我来说是安全的,因为:

  • 如果任何库定义了同名的弱符号,它将被提升的符号覆盖,这是很好的,因为对于弱符号,我们可以自由选择任何定义。
  • 如果没有图书馆真的定义这样的符号..。没有什么特别的事情发生
  • 如果库定义了在可执行文件中没有定义的弱符号,那么一切都可以正常工作。

在我试图与二进制程序开发人员讨论这个问题之前,我是否遗漏了一个巨大的错误?

EN

回答 1

Stack Overflow用户

发布于 2013-03-04 00:15:23

我看不出有什么能阻止你描述的工作。

不过,我想知道这是否值得这样做。我确信这也是你的“二进制开发人员”想知道的。

因此,我建议您看看几件事:在典型情况下,在可执行文件和动态库中定义相同的符号的频率是多少?

由于很可能仍有大量未在可执行文件中定义的弱符号,您实际节省了多少时间?

一些现有程序的例子,这些程序得到了改进,或者至少回答了“对于应用程序X,这些时间平均花在查找一个弱符号上,这就是潜在的收益吗?”

这就是我作为一个二进制开发人员所要寻找的--我不是其中之一,但如果我是这样的话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15190634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档