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`` 把所有的告警信息转化为错误信息,并在告警发生时终止编译过程