gcc
========================================
常规选项
----------------------------------------
- ``-c`` 只执行预处理、编译、汇编,不执行链接过程
- ``-E`` 输出预处理文件
- ``-g`` 在可执行程序中包含标准调试信息
- ``-I
`` 在头文件的搜索路径列表中添加dir目录
- ``-L `` 在库文件的搜索路径列表中添加dir目录
- ``-o `` 设置生成的文件名
- ``-Ox`` 设置优化的等级
- ``-s`` 去掉符号
- ``-S`` 输出汇编文件
- ``-v`` 打印出编译器内部编译各过程的命令行信息和编译器的版本
安全相关选项
----------------------------------------
- ``-fno-exceptions`` 不使用异常
- ``-fno-stack-protector`` 不开启canary栈溢出检测
- ``-z execstack`` 开启栈可执行关闭NX
体系结构相关选项
----------------------------------------
- ``-m32`` 生成32bit程序需要gcc-multilib (x86机器上编译不用加)
- ``-mcpu=type`` 针对不同的CPU使用相应的CPU指令,type可为i386/i486/pentium/i686等
- ``-mieee-fp`` 使用IEEE标准进行浮点数的比较
- ``-mno-ieee-fp`` 不使用IEEE标准进行浮点数的比较
- ``-mrtd`` 强行将函数参数个数固定的函数用 ``ret NUM`` 返回,节省调用函数的一条指令
- ``-mshort`` 把int类型作为16位处理,相当于short int
- ``-msoft-float`` 输出包含浮点库调用的目标代码
报警相关选项
----------------------------------------
- ``-ansi`` 支持符合ANSI标准的C程序
- ``-pedantic`` 允许发出ANSI C标准所列的全部警告信息
- ``-pedantic-error`` 允许发出ANSI C标准所列的全部错误信息
- ``-w`` 关闭所有告警
- ``-Wall`` 允许发出Gcc提供的所有有用的报警信息
- ``-Werror`` 把所有的告警信息转化为错误信息,并在告警发生时终止编译过程