【发布时间】:2012-09-05 08:56:30
【问题描述】:
我对 g++ 编译器不太熟悉,尤其是选项,例如 -s、-g 和 -O。
首先,请问这些选项什么时候生效?在编译或链接阶段?我通常把我需要的所有选项都放在两个阶段。
其次,有-g1、-g2、-g3选项吗?我知道 -g 在可执行文件中添加调试信息。其他人有何不同?
第三,-s 有什么作用? -s、-g 和 -O3 可以一起工作吗?我的目标是使可执行文件 1)快速运行,以及 2)尽可能小。你有什么建议?
【问题讨论】:
-
我是在编译阶段还是链接阶段或两个阶段都应用所有选项?我可以在编译阶段包含调试信息 -g,然后在链接阶段应用 -O3 和 -s 吗?我不知道这会起作用...
-
实际上,我正在编写一个 Makefile。我想知道是否可以在编译中包含调试信息以创建目标文件,然后使用目标文件创建两个不同版本的可执行文件。可能吗?谢谢。
-
我认为您正在扩展这个问题。是的,您可以使用“-ggdb -g3 -O3 -c”进行编译,然后如果要链接“发布”,请使用“-O3 -s”,如果要链接以进行调试,请使用“-O3 -ggdb -g3 -O3”。但你为什么想要这样的东西?节省的磁盘空间(和时间)并没有那么多,如果你使用 O3 和调试它不是很清楚。也许你应该发布另一个问题来更好地解释你的用例......
标签: performance compilation g++ options