sub*_*ubb 13 c c++ visual-studio-2010
例如,如果我静态链接到freeglut,编译器是否包含freeglut中的所有内容或仅包含我使用的部分?当然,这意味着链接器(或编译器?)会进行某种依赖性分析,以确定它可以安全排除的内容.
如果是这样,有没有办法查看Visual Studio中包含或排除的内容?
这部分是一个实施质量问题,但有一个真正的问题.
也就是说,通过标准,链接器必须添加所有引用的编译单元.但是说在库中,你有一个只有一个静态变量的编译单元,它的初始化注册了一些注册表,例如消息处理,工厂,无论什么,或者它的构造函数和析构函数输出,分别是"在main之前"和"主要之后".如果引用了该编译单元中的任何内容,则链接器只能跳过它,将其删除.
因此,为了确保这些静态变量不被优化,使用符合标准的工具链,在该编译单元中引用某些东西是必要且充分的.
在Visual Studio中重新看到已包含的内容,据我所知,除了要求链接器的详细输出(如链接器选项)之外别无他法/verbose:ref.
但是,使用该选项可以获得非常详细的输出.
另一种方法是向链接器询问映射文件,例如链接器选项/map:blah.
不过,这个输出也非常冗长.
| 归档时间: |
|
| 查看次数: |
4257 次 |
| 最近记录: |