-O的设置一共有5种常见的
- O0:零,表示关闭所有优化选项, 也就是默认的参数,没有进行优化
- 参数 -O1、-O2、-O3 中,随着数字变大,代码的优化程度也越高,不过这在某种意义上来说,也是以牺牲程序的可调试性为代价的。
- Os:是在-O2的基础上,去掉了那些会导致最终可执行程序增大的优化,如果想要更小的可执行程序,可以使用这个选项。
补充几个
- Og 是在O1 的基础上,去掉了哪些影响调试的优化,所以最终是为了调试程序,可以使用该参数。不过光有这个参数也是不行的,这个参数只是告诉编译器,编译后的代码不要影响调试,但调试信息的生成还是靠 -g 参数的。
- -Ofast 是在O3 的基础上,添加了一些非常规优化,这些优化并没有遵守国际标准。
可以使用gcc -Q – help=optimizers命令来查询