用于优化的-O
等g ++标志和用于创建调试符号的-g
是否会影响链接过程中的任何内容?
更具体地说,如果我将编译和链接分开(例如,在make文件中),并且我在编译期间提供了-O
和-g
标志,那么在链接时我是否还应该提供这些标志?
答案 0 :(得分:1)
传统上,这是不必要的。然而,编译器的最新改进确实至少允许在链接时运行:LTO(链接时优化)导致编译的目标文件包含中间代码,而不是机器代码,并且中间代码将被编译为机器代码在链接时,可以应用优化,如果每个目标文件本身包含机器代码,则优化无效。编译的第二步受命令行选项(如-O
)的影响,因此在链接时应将它们包含在命令行中。