使用-g3和-O3进行编译 、、、 我见过的大多数构建环境至少有两种策略:调试构建与最终/优化/发布构建。对于gcc来说,这通常意味着-g对-O的某些版本。现在,我看到了这样一种情况:优化的构建是用-O3构建的,而调试版本是用-g3和-O3构建的。mangcc确实表明这是可能的,但对于实际调试而言,这似乎与我的直觉相悖...
gcc 时有关调试信息:-g3(调试信息)/-O0(编译优化)/-s(裁剪执行程序信息) -g /-gdb/-g3 编译调试信息 “-o”是指目标文件 gcc 编译选项 -s 可以裁剪执行程序的信息,删除可执行文件中所有符号表和重新定位信息,以压缩可执行文件,导致gdb调试无效,使用命令 file excfilename可以看到有strip 一、gcc -s...
gcc 在产生调试符号时,同样采用了分级的思路,开发人员可以通过在 -g 选项后附加数字1、2、3指定在代码中加入调试信息的多少。默认的级别是2(-g2),此时产生的调试信息包括:扩展的符号表、行号、局部或外部变量信息。 级别3(-g3)包含级别2中的所有调试信息以及源代码中定义的宏。 级别1(-g1)不包含局部变量和...
-O2:更多优化,除了空间和速度交换的优化选项,执行几乎所有的优化 如:进行循环展开和函数内联 会增加编译时间,但提高了生成代码的执行效率 -ffloat-store:不要在寄存器中存放浮点变量8. 代码生成选项-fpic:如果支持这种目标机,编译器就生成位置无关目标码,适用与共享库 -fPIC:如果支持这种目标机,编译器就生成位置...
/O2 最大化速度 maximize speed /Os 优选代码空间 favor code space /Oa 假设没有别名 assume no aliasing /Ot 优选代码速度 favor code speed /Ob 内联展开(默认 n=0) inline expansion (default n=0) /Ow 假设交叉函数别名 assume cross-function aliasing ...
选项-O2告诉gcc除了完成所有-O1级别的优化之外,同时还要进行一些额外的调整工作,如处理器指令调度等。 选项-O3则除了完成所有-O2级别的优化之外,还包括循环展开和其他一些与处理器特性相关的优化工作。 通常来说,数字越大优化的等级越高,同时也就意味着程序的运行速度越快。许多Linux程序员都喜欢使用-O2选项,因为它...
-O2:更多优化,除了空间和速度交换的优化选项,执行几乎所有的优化 如:进行循环展开和函数内联 会增加编译时间,但提高了生成代码的执行效率 -ffloat-store:不要在寄存器中存放浮点变量 8. 代码生成选项 -fpic:如果支持这种目标机,编译器就生成位置无关目标码,适用与共享库 ...
GCC在产生调试符号时,同样采用了分级的思路,开发人员可以通过在-g选项后附加数字1、2或3来指定在代码中加入调试信息 的多少。默认的级别是2(-g2),此时产生的调试信息包括扩展的符号表、行号、局部或外部变量信息。级别3(-g3)包含级别2中的所有调试信息,以及 源代码中定义的宏。级别1(-g1)不包含局部变量和与...
-O0-O1-O2-O3编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高-g只是编译器,在编译的时候,产生调试信息。-gstabs此选项以stabs格式声称调试信息,但是不包括gdb调试信息.-gstabs+此选项以stabs格式声称调试信息,并且包含仅供gdb使用的额外调试信息.-ggdb此选项将尽可能的生成gdb的可以...
-O2 ⽐ -O 更好的优化编译、链接。当然整个编译链接过程会更慢。-Idirname 将 dirname 所指出的⽬录加⼊到程序头⽂件⽬录列表中,是在预编译过程中使⽤的参数。说明:C程序中的头⽂件包含两种情况:#include <stdio.h> #include "stdio.h"其中,使⽤尖括号(<>),预处理程序 cpp 在系统...