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