一、makefile的概念:
- C语言中,我们使用visual studio开发软件时候,写程序开始时候都会创建一个project项目文件,然后在文件里面编译 .h 和 .c 的文件。
- 在Linux中,有一个叫make的东西,就相当于C语言的集成开发环境,我们只需要在make里面创建文件,写代码,make会帮我们管理这些文件。
- 不过我们创建的项目不叫project,而是称为Makefile,打开一个make源程序包,发现很多Makefile的文件,说明里面有很多的项目。
- 在源程序包里面,也有名为makefile的文件(m是小写),两个命名同时存在,这是合理的,在开发一个项目的时候,工程师一般都会命名为Makefile然后打包交给用户,用户觉得某个Makefile需要改动,用户改动后或者新建后的项目定义为makefile,并且在运行时候,先执行makefile,再执行Makefile文件。
二、实战代码演示与讲解
- 没有makefile文件的项目是怎么创建运行的
-
touch main.c tool1.c tool2.c tool1.h tool2.h
使用touch指令进行创建相关文件
-
通过ls指令验证相关文件是否成功创建
-
给文件中放一些相关命令
-
通过指令进行编译
gcc *.c //通过该指令生成可执行文件 a.out
-
-
通过makefile文件进行生成可执行文件
-
通过vim编辑器进行创建makefile并打开,输入以下指令
# 自定义依赖关系,源文件(后缀为.c)经过编译汇编生成目标文件(后缀为.o) # 目标文件执行生成可执行文件(类似与mytool) mytool:main.o tool1.o tool2.o # 写gcc命令时候,前面要tab按键一下 # 不写-o参数,生成默认的可执行文件名为a.out,这里我们修改为mytool gcc main.o tool1.o tool2.0 -o mytool main.o:main.c #-Wall 可以看到所有的警告 #-g 可以调试 #-c 只允许执行到汇编步骤,不允许链接。 gcc main.c -c -Wall -g -o main.o tool1.o:tool1.c gcc main.c -c -Wall -g -o tool1.o tool2.o:tool2.c gcc main.c -c -Wall -g -o tool2.o
保存后退出,并查看makefile文件是否成功编写
-
通过make指令运行make文件
-
注:如果你的文件名字不是makefile,而是makefilebuff-demo这样自定义的,那么需要这么操作
make -f makefilebuff-demo
make 命令可以通过 -f 执行使用的makefile。
如果在没有使用 -f 指定的情况下,会按照下面的顺序执行。
GNUmakefile, makefile 和 Makefile - 通过ls指令查看生成的可执行文件mytool
-