GCC 优化标志
Posted
技术标签:
【中文标题】GCC 优化标志【英文标题】:GCC Optimization Flags 【发布时间】:2013-12-08 23:05:49 【问题描述】:我正在尝试将一堆具有不同优化的可执行文件放在一起。我唯一的问题是,带有 -c 的 gcc 命令也应该能够使用 -O 标志吗? 我问这个,因为我意识到当我只在 gcc 命令中放置优化标志来制作 exe 时,文件之间的大小根本没有区别,这似乎不正确。
例如,我有这样的事情:
g++ -c cat.cpp
g++ -c dog.cpp
g++ cat.o dog.o -o catdog
我会在这样的所有东西上使用标志吗:
g++ -c -O2 sobol.cpp
g++ -c -O2 sobol_prb.cpp
g++ sobol.o sobol_prb.o -O2 -o catdog02
如果有人可以帮助我,我将不胜感激。
谢谢。
【问题讨论】:
【参考方案1】:你可以这样做:
g++ sobol.cpp sobol_prb.cpp -O2 -o catdog02
如果你需要编译超过 2 或 3 个文件,你应该考虑 Makefile。
如果您正在处理一个重要的项目,您应该开始考虑 @polkadotcadaver 建议的构建系统,尽管我会选择 automake 或 cmake,因为它们比其他构建系统更受欢迎。
【讨论】:
【参考方案2】:是的,在每个对象编译时使用优化标志。
(一般来说,使用像 SCons 这样的构建系统可以让这种事情变得更容易,即使它是一个“小”项目。)
【讨论】:
【参考方案3】:当您对对象 (.o) 文件执行 gcc 时,这基本上只是调用链接器并选择适当的库等等。在通常模式下,此步骤不涉及编译,优化标志将不起作用。
优化发生在编译步骤(带有 .cpp 输入的那个),这就是优化开关的相关之处。
链接时间优化 (-flto) 有点不同,在编译和链接时需要使用优化开关。
【讨论】:
以上是关于GCC 优化标志的主要内容,如果未能解决你的问题,请参考以下文章