我正在尝试从源代码编译一个开源组件。我正在使用gcc
命令编译该组件中的所有C文件。
当我按-O2 -Os
的顺序传递选项时,二进制文件只有几KB。但当我按顺序传递选项时,-Os -O2
二进制大小较大。
我知道在gcc
命令中包含子目录或链接库的情况下,顺序很重要。为什么顺序对gcc
命令的优化参数很重要?
我使用的是gcc 4.9.1版本。
因为它只是使用它看到的最后一个1选项。
1.从手册页:如果你使用多个-O选项,无论有没有级别号,最后一个这样的选项是有效的
来自GCC手册页:
如果使用多个
-O
选项,无论是否使用级别编号,最后一个这样的选项都是有效的。
不能在命令行中组合-O2
和-Os
。
但以下是对-Os
:的描述
优化尺寸
-Os
启用所有通常不会增加代码大小的-O2
优化。它还执行旨在减小代码大小的进一步优化。
看起来-Os
已经在做你想做的事了。