1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Linux C语言高级学习第八天(gcc代码优化makefile)

Linux C语言高级学习第八天(gcc代码优化makefile)

时间:2020-07-16 03:38:40

相关推荐

Linux C语言高级学习第八天(gcc代码优化makefile)

多个.c文件的混合编译

1.gcc

C语言编译器

gcc xxx.c -o xxx

-o :指定生成产物的名称

免费、开源、速度快(快30%)、占用内存小、gcc代码优化

gcc支持对代码进行三级优化

O0 不优化

O1 一级优化

O2 二级优化(常用)gcc xxx.c -O2 -o xxx

O3 三级优化

2.gdb(非重点)

db-->debugger除虫

若使用gdb,则需要在代码编译时,添加可选项 -g

gcc xxx.c -g -o xxx

-g:允许代码调试(默认是不允许的)

gdb调试代码:breakpoint(断点)

3.Make 工程管理器

C语言代码管理工具

最开始:make作为文件转换工具-->与gcc共同使用

make负责告诉gcc做什么,gcc负责做-->二期学习系统移植时,内核也是用make进行管理的

Make工程管理器的工作流程基于makefile(Makefile)文件

1)makefile三大要素

-->形式:

目标:依赖

规则

注意:规则前面需要缩进,缩进必须使用tab

1.目标(target):makefile生成的文件

2.依赖(dependency):生成目标文件需要依赖的前置条件

3.规则(rule):生成目标需要的指令

在执行makefile时,默认情况下makefile会复述一遍运行的规则;相当于进度条。若不想makefile复述规则,则可以在规则前添加@

makefile支持生成多个目标。若需要生成某个目标,则make目标名-->

-->若在make时未指定特定的目标,则默认生成第一个目标

依赖循环时,make会自动舍弃最后一个依赖关系

2)使用makefile管理代码

头文件的标准写法

#ifndef __MY_H_INCLUDE__#define __MY_H_INCLUDE__//头文件的具体内容#endif

必须要这么写,防止头文件被重复包含--->在预处理时头文件被替换

多次include只会执行一个include

※头文件内函数的声明与代码文件内函数的定义要匹配。如果不匹配编译器会报错

#include<> 在系统默认位置查找头文件

#include"" 首先在本地查找,若未找到再在默认位置查找

--> 假目标

makefile可以根据当前文件的修改时间戳决定哪些代码需要二次编译-->只会针对于修改的文件进行二次编译

3)makefile自动推断

(1)makefile变量

变量赋值时,= 左右要加上空格

使用变量的值时,$(变量名)

(2)makefile自动推断变量

$@ 需要生成的目标

$^ 生成该目标需要的所有依赖

$< 生成该目标需要的一个依赖

(3)makefile通配符

% 匹配多个字符

以上三步之后-->

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。