Visual Studio 中的 /GL 和 /LTCG 有啥区别
Posted
技术标签:
【中文标题】Visual Studio 中的 /GL 和 /LTCG 有啥区别【英文标题】:What is the difference between /GL and /LTCG in Visual StudioVisual Studio 中的 /GL 和 /LTCG 有什么区别 【发布时间】:2016-02-18 02:25:51 【问题描述】:我尝试在网上寻找差异,但找不到很多。这两个选项听起来彼此相关:
/LTCG:https://msdn.microsoft.com/en-us/library/xbf3tbeh.aspx
/LTCG 选项告诉链接器调用编译器并执行整个程序优化。
/GL:https://msdn.microsoft.com/en-us/library/0zza0de8.aspx
启用整个程序优化。
有人知道具体的区别吗?
【问题讨论】:
您提供的第一个链接中的文档中值得注意的信息“/LTCG 隐含在 /GL 中。” 同意,但这是否意味着 /GL 比 /LTCG 做得更多? 您提供的第二个链接中的文档中值得注意的信息“如果您使用 /GL 和 /c 编译程序,您应该使用 /LTCG 链接器选项来创建输出文件。” 我不是这方面的专家,否则我会留下答案;我只是快速浏览了文档。 看起来关键是“/GL 还提供配置文件引导优化;请参阅 /LTCG。” 【参考方案1】:/GL
是编译器选项,/LTCG
是链接器选项。根据文档,它们彼此密切相关。例如:
/LTCG
隐含在/GL
中
但是,/LTCG
可以在不使用 /GL
的情况下使用。
/LTCG
选项告诉链接器调用编译器并执行整个程序优化。您还可以进行配置文件引导优化。
如何启用配置文件引导优化?通过使用/GL
选项。
/GL
还提供配置文件引导优化;见/LTCG
什么是配置文件引导优化?这是profile guided optimization documentation开头的sn-p:
配置文件引导优化可让您优化输出文件,其中优化器使用来自 .exe 或 .dll 文件的测试运行的数据。数据代表程序在生产环境中的执行情况。
【讨论】:
以上是关于Visual Studio 中的 /GL 和 /LTCG 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio2000系列版本安装OpenGL可以这么简单!
visual studio 2005 opengl 无法解析的外部符号