01编译选项和内核编译
首先我们都知道,Linux
内核如果用O0
编译,是无法编译过的,Linux
的内核编译,要么是O2
,要么是Os
,这点从Linux
的Makefile
里面可以看出:
当选择了
CONFIG_CC_OPTIMIZE_FOR_SIZE
它会是Os
,否则就是O2
。
其实O2
和Os
,都是一些优化选项的集合:
gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
gcc -c -Q -Os --help=optimizers > /tmp/Os-opts
前者倾向于基于速度的优化,后者倾向于基于size
更小的优化。对比二者的开关选项:
meld /tmp/O2-opts /tmp/Os-opts
发现差异小的可怜: