链接期间的GCC标志

时间:2014-06-19 00:07:31

标签: c gcc compilation linker

在流程的链接部分,是否存在-ansi,-Wall和-pedantic等标志可能相关的情况?

-O优化标志怎么样?它们仅在编译步骤中是相关的还是在链接期间也相关?

谢谢!

2 个答案:

答案 0 :(得分:3)

在实践中,没有 - 但在理论上,-ansi是一种方言选项,因此它可能会影响链接。我分别在使用C ++ 11或C ++ 03时看到了使用libc ++或libstdc ++的旧版clang的类似行为。我发现将这些标记放在CC变量中更容易:CC = gcc -std=c99CC = 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.