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 Studio 找不到 GL/glut.h

visual studio 2010配置opengl环境

Visual Studio2000系列版本安装OpenGL可以这么简单!

visual studio 2005 opengl 无法解析的外部符号

使用 CMake 和 Visual Studio 2019 编译 GLEW?

Visual Studio Code 中的剪切行快捷方式(VS 中的 Ctrl+L)(不是删除行!)