15.6.1. gcc

15.6.1.1. 常规选项

  • -c 只执行预处理、编译、汇编,不执行链接过程

  • -E 输出预处理文件

  • -g 在可执行程序中包含标准调试信息

  • -I <dir> 在头文件的搜索路径列表中添加dir目录

  • -L <dir> 在库文件的搜索路径列表中添加dir目录

  • -o <filename> 设置生成的文件名

  • -Ox 设置优化的等级

  • -s 去掉符号

  • -S 输出汇编文件

  • -v 打印出编译器内部编译各过程的命令行信息和编译器的版本

15.6.1.2. 安全相关选项

  • -fno-exceptions 不使用异常

  • -fno-stack-protector 不开启canary栈溢出检测

  • -z execstack 开启栈可执行关闭NX

15.6.1.3. 体系结构相关选项

  • -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 输出包含浮点库调用的目标代码

15.6.1.4. 报警相关选项

  • -ansi 支持符合ANSI标准的C程序

  • -pedantic 允许发出ANSI C标准所列的全部警告信息

  • -pedantic-error 允许发出ANSI C标准所列的全部错误信息

  • -w 关闭所有告警

  • -Wall 允许发出Gcc提供的所有有用的报警信息

  • -Werror 把所有的告警信息转化为错误信息,并在告警发生时终止编译过程