在 GCC 命令中使用两个或多个优化选项

Using two or more optimize option with GCC command

我正在尝试从源代码编译开源组件。我正在使用 gcc 命令编译该组件中的所有 C 文件。

当我按顺序 -O2 -Os 传递选项时,二进制文件只有几 KB。但是当我按顺序传递选项时 -Os -O2 二进制大小很大。

我知道在 gcc 命令中包含子目录或链接库时顺序很重要。 为什么顺序对 gcc 命令的优化参数很重要?

我正在使用 gcc 版本 4.9.1。

因为它只是使用它看到的最后一个1选项。


1.来自手册页:如果您使用多个 -O 选项,有或没有级别编号,最后一个这样的选项是有效的。

来自 GCC man page:

If you use multiple -O options, with or without level numbers, the last such option is the one that is effective.

您不能在命令行中组合使用 -O2-Os

但这里是 -Os 的描述:

Optimize for size. -Os enables all -O2 optimizations that do not typically increase code size. It also performs further optimizations designed to reduce code size.

看起来 -Os 已经在做你想做的事了。