makefile常用语法讲解(1)


1、make是一个解释makefile中指令的命令工具。Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。

Makefile 里主要包含了五种类型的语句/行:显式规则、隐式规则、变量定义、文件指示和注释。

make命令格式:make [-f Makefile] [option] [target] 

2、编译和链接规则

1)如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。

2)如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。

3)如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。

3、makefile的构成

1)需要由make工具创建的目标体(target),通常是目标文件或可执行文件

2)要创建的目标体所依赖的文件(dependency_file)。

3)创建每个目标体时需要运行的命令(command)。

格式如下:

target:dependency_files

<TAB>command

在这里面,变量一般都是字符串,他有点像c语言的宏。

makefile中的文件指示,包含3部分,一个是在一个Makefie中引用另一个Makefile,就像c语言的include一样;另一个是根据某些情况指定Makefile中的有效部分,就像C语言中的预编译#if一样;还有就是定义一个多行的命令。

注释:注释符用"#",可以用反斜框进行转义,如输入注释,“\#”。

4、makefile的书写

1)所有文件都在一个目录中

示例

st_work : main.o  st_work.o  fun.o

gcc  main.o  st_work.o  fun.o  -o  st_work main (命令以Tab开头)

st_work.o : st_work.c

gcc  -c st_work.c  -o st_work

main.o : main.c  st_work.h

gcc -c main.c -o  main.o

fun.o : fun.c fun.h

gcc -c  fun.c -o fun.o

clean:

rm -f st_work *.o

2)多目录的写法

我们这里,在工作目录下有4个文件夹  分别是 sources(源文件) obj (中间文件)headers(头文件) bin(目标文件)

sources里面有 main.c  st_work.c fun.c

obj 里面最初没有文件

headers 里面有 fun.h st_work.h

最终目标取名为 st_work,它应存放到bin里面

预备知识:

gcc 的3个参数:

1. -o 指定目标文件

gcc sources/main.c -o bin/main

2. -c 编译的时候只生产目标文件不链接

gcc -c sources/main.c -o obj/main.o

3. -I 主要指定头文件的搜索路径

gcc -I headers -c main.c -o main.o

4. -l 指定静态库

gcc -lpthread ...

示例

bin/st_work : obj/main.o  obj/st_work.o  obj/fun.o  

   gcc  obj/main.o obj/st_work.o  obj/fun.o  -o bin/st_work  (命令以Tab开头)

obj/st_work.o : sources/st_work.c

gcc  -I  headers -c sources/st_work.c  -o  obj/st_work.o

obj/main.o : sources/main.c

gcc  -I  headers -c sources/main.c    -o  obj/main.o

obj/fun.o  : sources/fun.c

gcc  -I  headers -c sources/fun.c     -o  obj/fun.o

clean:

rm -f bin/st_work obj/*.o

3)隐式规则的引入

    3个预定义变量介绍:

1.  $@     表示要生成的目标

2.  $^     表示全部的依赖文件

3.  $<     表示第一个依赖文件

bin/st_work : obj/main.o  obj/st_work.o  obj/fun.o  

gcc  $^  -o $@  (命令一定要用以Tab开头)

obj/st_work.o : sources/st_work.c

gcc  -I  headers   -c $< -o  $@

obj/main.o : sources/main.c

gcc  -I  headers   -c $< -o  $@

obj/fun.o  : sources/fun.c

gcc  -I  headers   -c $< -o  $@

clean:

rm -f bin/st_work obj/*.o

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 陈皓的makefile教程pdf是一本关于makefile的实用工具书,它详细介绍了makefile的基本语法、规则和常见用法,涵盖了多种操作系统的编译环境和工具链,适用于各类软件开发的实际需求。 该教程的优点在于它提供了很多实用的示例和详细的讲解,使读者能够很快地理解并掌握makefile的编写方法,并且可以根据自己的需求进行灵活的配置和扩展。同时,教程也讲解了一些高级技巧和优化方法,让读者了解和熟练运用makefile来提高程序的编译效率和可维护性。 针对初学者,该教程从基础入手,介绍了makefile的起源和作用,十分易于理解。然后逐步深入到常用的命令、变量、条件判断、函数等详细讲解,并提供大量的实例来演示不同的编译方式和场景。对于有经验的开发者,该教程也提供了很多有用的技巧和经验分享,可以使其更好地利用makefile进行项目管理和优化。 总体来说,陈皓的makefile教程pdf是一本值得推荐的宝典,它可以帮助读者快速学习makefile的编写方法,并提供大量的实用技巧和经验分享,从而提高软件开发的效率和质量。 ### 回答2: 陈皓的makefile教程是一份极为详尽和实用的教程,它适合想要初步学习和使用makefile的程序员和系统管理员。该教程包含了很多有关makefile的基本概念和语法的解释,并提供了实用的例子和模板来帮助学习者快速上手。 陈皓的教程以实践为重,内容非常具体,详细讲解makefile的各种常见用法,如变量、条件语句、循环语句等等,帮助学习者可以很好地掌握makefile的应用。同时,教程还包含了一些高级使用技巧,如自动化依赖关系、多目标构建、命令行参数等等,使学习者可以更加深入地使用makefile。 此外,陈皓的教程还提供了很多有用的工具和库,这些工具和库可以协助使用makefile实现更加高级的目标。尤其是对互联网公司的程序员而言,使用陈皓的教程可以快速学会如何构建和发布复杂的应用程序,降低代码管理和部署的成本和工作量,提高工作效率。 总之,陈皓的makefile教程pdf是一份非常好用的资源,对程序员来说是一份不可多得的学习资料,它能够为初学者提供深入浅出的指导,同时也适用于有经验的Makefile用户。 ### 回答3: 陈皓是一位知名的计算机程序员和教育家,他在网络上分享了许多优质的教程和资料,其就包括了makefile教程的PDF文件。makefile是一种代码构建工具,可以帮助开发者在编写大型项目时更加高效地管理代码,将源文件编译成可执行文件。陈皓的makefile教程PDF详尽地介绍了makefile的使用方法、语法结构和示例代码,帮助读者深入理解makefile的原理和实现方式。这份教程不仅适合初学者学习,也可以供经验丰富的开发者参考进一步提高技能。在PDF文件,陈皓以简洁明了的语言和大量的案例说明了如何正确编写makefile,特别是在软件开发需要考虑的各种问题和实践经验。如果你正在学习或掌握makefile的使用,这份教程是非常推荐的学习资料。陈皓的教程PDF可以在互联网上免费获取,学习者可以自主下载或者在线阅读。相信通过学习这份教程后,你一定能更好地掌握makefile的技术,并在日常开发得到应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值