LINUX学习笔记—Makefile(一)

为什么使用Makefile

在linux下运行C语言源文件需要先使用gcc进行编译,在我们日常学习使用的过程中由于调用的源文件和头文件较少因此在linux命令行下运行不会太过麻烦,但一个大工程,源文件不计其数,其按类型、功能、模块分别放在若干个目录中,而makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令。

C语言运行的具体过程

预处理

将 .h .c 文件展开形成一个文件。宏定义直接替换 头文件 库文件 形成.i

汇编

汇编实际上指把 . i 文件生成一个汇编代码文件 . s (目标机器指令)

编译

将 . s 文件生成一个 . o 或者 . obj文件

链接

将 . o 文件链接成 . exe文件(可执行文件) . elf文件 (Linux系统下)

Makefile

make是一个命令工具,它解释Makefile makefile是一种全新的脚本语言,有自己的书写格式、关键字、函数中的指令。接下来的笔记即关于makefile的写法。

显示规则

#   //注释符

目标文件:依赖文件
例如将hello.c 编译为hello可执行文件的时候可以写为

hello : hello.c
   gcc hello.o -o hello
hello.o : hello.s
   gcc hello.s -o hello.o
hello.s : hello.i
   gcc hello.i -s hello.s
hello.i : hello.c
   gcc hello.c -i hello.i

指令的执行顺序和书写顺序相反,因为在Makefile中规定第一个文件是最终目标文件,这就相当于一个递归的过程。执行上述代码的时候会生成四个过程文件。这时候可以调用伪目标指令将删除文件指令写入 . PHONY

.PHONY
clear:
   rm -rf hello.o hello.s hello.i

调用这个Makefile可以用make clear

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值