-O0: 不做任何优化,这是默认的编译选项。
-O1:优化会消耗少多的编译时间,它主要对代码的分支,常量以及表达式等进行优化。
-O2:会尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间占用更多的内存和编译时间。
-O3: 在O2的基础上进行更多的优化,例如使用伪寄存器网络,普通函数的内联,以及针对循环的更多优化。
-g 和 -ggdb 都是令 gcc 生成调试信息,但是它们也是有区别的。
-g 选项利用操作系统的“原生格式(native format)”生成调试信息。GDB 可以直接利用这个信息,其它调试器也可以使用这个调试信息。
-ggdb 使 GCC 为 GDB 生成专用的更为丰富的调试信息。