在流程的链接部分,是否存在-ansi,-Wall和-pedantic等标志可能相关的情况?
-O优化标志怎么样?它们仅在编译步骤中是相关的还是在链接期间也相关?
谢谢!
答案 0 :(得分:3)
在实践中,没有 - 但在理论上,-ansi
是一种方言选项,因此它可能会影响链接。我分别在使用C ++ 11或C ++ 03时看到了使用libc ++或libstdc ++的旧版clang的类似行为。我发现将这些标记放在CC
变量中更容易:CC = gcc -std=c99
或CC = gcc -std=c90
(ansi)。
我只是习惯用$CXX
或$CC
来调用C ++(或C)。默认情况下,它们会被传递以配置脚本。
我不知道这是C的问题,只要ABI和通话惯例没有改变。另一方面,C ++需要更改C ++运行时以支持新的语言功能。在任何一种情况下,它都是使用相关库调用链接器的编译器。
答案 1 :(得分:2)
gcc中有链接时优化:
-flto[=n]
This option runs the standard link-time optimizer. When invoked
with source code, it generates GIMPLE (one of GCC's internal
representations) and writes it to special ELF sections in the
object file. When the object files are linked together, all the
function bodies are read from these ELF sections and instantiated
as if they had been part of the same translation unit.
To use the link-time optimizer, -flto needs to be specified at
compile time and during the final link.