Makefile 规则:
目标:目标文件A 目标文件B ...
<tab> gcc -o 与监理的执行文件 目标文件1 目标文件2 ...
* Makefile 中的# 表示注释
* <tab> 要在命令行的第一个字符
* 目标文件和相关文件之间用“:”隔开
# 可以使用续行号(\)将单独一个命令延续成几行。但要注意在续行号后面不能跟任何字符

实例 1:
# 以#开头的为注释:
test: prog.o code.o #生成运行文件test需要用到prog.o 和code.o两个文件(如果make没有加生成的目标文件;则默认使用test)
gcc -o test prog.o code.o#生成test 的GCC命令
prog.o: prog.c prog.h code.h #生成目标文件prog.o需要用到prog.c prog.h 和code.h三个文件
gcc -c prog.c -o prog.o#生成prog.o的命令
code.o: code.c code.h#同prog.o的过程
gcc -c code.c -o code.o
clean:#Makefile的内部命令
rm -f *.o#清除所有以".o"结尾的文件

Makefile的更新从下向上按照时间戳,如果依赖文件的时间戳比生成文件的时间戳新则重新编译。

Makefile的变量就像是一个环境变量。事实上,环境变量在make中也被解释成make的变量。
Makefile的变量大小写敏感,并且基本上使用大写。
Makefile变量的主要作用:
a 保存文件名列表;
b 保存可执行命令名;
c 保存编译器的参数;
Makefile变量的写法:
VARNAME = string
Makefile变量的使用:
${VARNAME}

实例 2:
在实例 1使用变量代替部分文件:
OBJS = prog.o code.o
CC = gcc
test: ${OBJS}
${CC} -o test ${OBJS}
prog.o: prog.c prog.h code.h
${CC} -o prog.c -o prog.o
code.o: code.c code.h#同prog
${CC} -c code.c -o code.o
clean:
rm -f *.o

整理自makefile课件

Makefile的基本规则实例说明相关推荐

  1. Makefile文件的编写(实例详解)

    1.什么是Makefile? 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,Makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译 ...

  2. Linux就这个范儿 第8章 我是Makefile

    Linux就这个范儿 第8章 我是Makefile P287 Makefile的作用就是--自动化编译,一旦写好,只需要一个make命令(解析Makefile,执行Makefile中描述的操作),整个 ...

  3. 教会你如何编写makefile文件

    最近一直在学习makefile是如何编写的.     当我们写的程序文件比较少的时候,敲入gcc /g++,当你在大型工程中,在一个个编译文件的话,你可能就会很郁闷.linux有一个自带的make命令 ...

  4. makefile 学习(一)

    一.Makefile的基本规则 GNU make 规则: target ... : prerequisites ...command........ target - 目标文件, 可以是Object ...

  5. linux 建立伪目标过程,linux之Makefile 编写、规则、伪目标、变量

    什么是Makefile?首先,make是一个工具程序(Utility software),是一种控制编译或者重复编译软件的工具:make可以自动管理软件编译的内容.方式和时机从而使程序员能够把精力集中 ...

  6. Linux Makefile自动生成--config.h

    2019独角兽企业重金招聘Python工程师标准>>> Linux Makefile自动生成--总体流程 Linux Makefile自动生成--实例 Linux Makefile自 ...

  7. 每天一篇Makefile(二)

    好,废话不多说,进入正题,来看我们今天的要讲的Makefile: lcd.bin: start.o main.o led.o clock.o uart.o lib.o lcd.oarm-linux-l ...

  8. Linux加减程序编写,Makefile 入门(加减乘除实现)

    Makefile 入门(加减乘除实现) 准备 使用任意Linux发行版即可,本文使用WSL Ubuntu. 开始之前,需要安装必要的工具: sudo apt install make g++ 开始 1 ...

  9. 多文件Makefile编写

    工作过程中,平时不怎么关注Makefile的书写规则,对于遇到的编译错误一般能看懂Makefile的基本规则也能解决.但如果想要编写Makefile文件还是有相当的难度的,更不用说包含多个目录和文件的 ...

最新文章

  1. SSM框架 mybatis-plus + spring + springmvc + redis 水果生鲜产品交易平台
  2. ClientScriptManager.RegisterStartupScript.
  3. webservice xsd.exe根据xml生成xsd。然后根据xsd生成java bean
  4. Mentor PADS 9.5下载安装及破解指南
  5. Java / Spring:如何快速生成整个Swagger记录的CRUD REST API
  6. Spring–设计领域模型和服务层
  7. Linux中Tomcat 服务的搭建
  8. JQuery实现ajax跨域
  9. 如何用 30 天入门年薪 30 万的技术领域?
  10. python-opencv有效随机角度旋转
  11. ubuntu18 安装 mysql5.7
  12. 浏览器request得不到cookie_Servlet第五篇「介绍会话技术、Cookie的API、详解、应用」...
  13. 数字孪生CIM智慧城市BIM,城市cim可视化解决方案公司
  14. 阿里互联互通再下一城,开放生态缔造新的产业蓝海?
  15. 编制职工档案管理程序C语言,职工档案管理系统
  16. 转载——visio密钥
  17. linux tty core code,linux tty core 源码分析(8)
  18. oracle toda和pl/sql匪夷所思的差异
  19. ubuntu linux编译环境搭建,Ubuntu14.04开发环境搭建
  20. JSON格式转MAP集合

热门文章

  1. MFC_选择目录对话框_选择文件对话框_指定目录遍历文件
  2. [Android] Android 锁屏实现与总结 (一)
  3. java接口对接——别人调用我们接口获取数据
  4. date-打印或者设置系统日期和时间
  5. Atitit swt 4.3 4.4 4.5 新特性java attilax总结
  6. Android Studio 技巧
  7. [凯立德]2013.12.17凯立德发布秋季版(2F21J0E)最新增量包SP1
  8. [转载] Python3 使用 SQLite3 数据库的操作笔记:批量插入
  9. CF932E Team Work(第二类斯特林数)
  10. python里我最容易搞不清楚问题之一的encode和decode