g ++编译选项-g debug和-O optimization

时间:2012-09-12 10:46:10

标签: performance compilation g++ options

我不太熟悉g ++编译器,尤其是选项,例如-s,-g和-O。

首先,我可以问这些选项何时生效?在编译或链接阶段?我通常会在两个阶段都提出我需要的所有选项。

其次,是否有-g1,-g2,-g3选项?我知道-g在to executable中添加了调试信息。其他人有何不同?

第三,-s有什么作用? -s,-g和-O3一起工作?我的目标是使可执行文件1)快速运行,2)如果可能的话,小尺寸。你有什么建议?

1 个答案:

答案 0 :(得分:12)

您不应该关注选项,而应关注您想要实现的目标。我对你想要达到的目标的一般评论:

  • 通常在快速与小之间进行权衡。 -O3意味着快速。 Os意味着尽可能快地增加尺寸。
  • 您可以使用调试信息(-g)进行优化(-O3),但有时信息很差,因为源和结果代码之间没有直接连接
  • 如果从可执行文件中删除调试信息(-s),您将无法轻松调试该可执行文件(您可以单独保存调试信息,但这是另一个故事)

始终使用手册(通过在shell中输入“man g ++”来访问,或通过在互联网上搜索“man g ++”)并搜索选项,如果你是古玩它的作用。如果你有更高级别的问题,那么你可以问(例如手册中解释了-g1和-g3之间的区别)

作为建议:使用-O3。如果您不断开发程序并使用GDB作为调试器使用:-ggdb -g3。

编辑:关于何时应用它们:通常你不担心它的相位,你只需发送选项,g ++就可以处理它们。如果您想要更具体的内容,那么您可以查看更多内容。