禁止编译器进行优化。默认为此项。 -O -O1 尝试优化编译时间和可执行文件大小。 -O2 更多的优化,会尝试几乎全部的优化功能,但不会进行“空间换时间”的优化方法。 -O3 在-O2 的基础上再打开一些优化选项:-finline-functions, -funswitch-loops 和 -fgcse-after-reload 。 -Os 对生成文件大小进行优化。它会...
gcc 中的"__attribute__ ((packed))" __attrubte__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐。 #define __u8 unsigned char #define __u16 unsigned short struct str_struct{ __u8 a; __u8 b; __u8 c; __u16 d; } __attribute__ ((packed...
如果编译时没有抱怨 segmentation fault,core dumped ,那么你 设定的 -O 优化参数一般就没什么问题。否则请降低优化级别 (-O3-O2-O1- 取消 )。个人意见:服务器使用 -O2 就可以了,它是最安全的优化参数 (集合) ;桌面可以使用 -O3 ;不鼓励使用过多的自定义优化选项,其实他们之间没什么明显的 5、速 度差异(...
◆Inline:如果某函数不能内嵌(inline),无论是声明为inline或者是指定了-finline-functions 选项,编译器都将发出警告。 ◆disabled-optimization:当需要太长时间或过多资源而导致不能完成某项优化时给出警告。 上面是使用-Wall选项时没有生效,但又比较常用的一些警告选项。 -Wextra 但不要被-Wall的名字迷惑,它并没...
-O2:更多优化,除了空间和速度交换的优化选项,执行几乎所有的优化 如:进行循环展开和函数内联 会增加编译时间,但提高了生成代码的执行效率 -ffloat-store:不要在寄存器中存放浮点变量 8. 代码生成选项 -fpic:如果支持这种目标机,编译器就生成位置无关目标码,适用与共享库 ...
三、attribute((packed)) 取消编译时对齐优化 __attribute__((packed))为取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,也就是采用1字节对齐。 四、attribute()在结构体类型中的使用方法 __attribute__()的位置比较灵活 定义结构体时不对类型重命名,即不使用typedef时: ...
程序安装目录 Linux下的程序通常都保存在专门的目录里。系统软件可以在/usr/bin子目录里找到。系统管理员为某个特定的主机系统或本地网络添加的程序可以在/usr/local/bin子目录里找到。系统管理员一般都喜欢使用/usr/local子目录,因为它可以把供应商提供的文件和后来添加的程序以及系统本身提供的程序隔离开来。/usr子...
-O0参数表示不使用任何优化策略,是gcc默认的优化参数。 因为没有使用任何优化策略,编译得到的机器码与程序源码高度对应,两者之间基本可以建立一一对应的关系。所以,-O0优化非常适合用于程序调试,并且通常和生成调试信息的参数-g(generate debug information)配合使用。-g参数会在编译时给生成的二进制文件附加一些用于代码...
1.优化参数: --O0:不进行优化 --O1:进行基本优化 --O2:进行更多优化 --O3:进行最大优化 --Os:进行优化以缩小代码尺寸 2.调试参数: --g:生成调试信息 - -ggdb:生成GDB可用的调试信息 - -gdwarf:生成DWARF调试信息 3.警告参数: - -Wall:开启所有警告 - -Werror:将所有警告视为错误 - -Wextra:开启...
(6)-O:优化选项,包括-O0、-O1、-O2、-O3等级别。 (7)-I:指定头文件搜索路径。 (8)-L:指定库文件搜索路径。 (9)-l:指定链接的库文件名。 2. 预处理选项 (1)-E:只进行预处理,输出预处理结果。 (2)-D:定义宏。 (3)-U:取消定义宏。 (4)-I:指定头文件搜索路径。 (5)-M:输出依赖关系。