Makefile入门教程

article/2025/9/12 4:15:05

转载: https://www.linuxidc.com/Linux/2014-08/105304.htm

Makefile入门教程

回顾
 
首先,我把需要的文件全部写出来(在《GCC学习笔记》处)。
 
 main.c文件
 
#include <stdio.h>
 #include "math.h"
 int main()
 {
 int sum = 0;
 sum = add(4, 3);
 printf("sum:%d", sum);
 
int result = 0;
 result = divide(4, 0);
 printf("result:%d\n", result);
 return 0;
 }
 


add.c文件
 
#include "math.h"
 
int add(int x, int y)
 {
 return x + y;
 }
 


divide.c文件
 
#include <stdio.h>
 
#include "math.h"
 int divide(int x, int y){
 if(y == 0){
 printf("y can't be zero\n");
 return 0;
 }
 return x / y;
 }
 


minus.c文件
 
#include "math.h"
 
int minus(int x, int y){
 return x - y;
 }
 
multiply.c文件
 
#include "math.h"
 
int multiply(int x, int y){
 return x * y;
 }
 
math.h文件
 
int add(int x, int y);
 
int minus(int x, int y);
 
int divide(int x, int y);
 
int multiply(int x, int y);

现在,在我的当前目录下有main.c  add.c  minus.c  divide.c  multiply.c 和math.h六个文件,下面的内容就会围绕这几个文件来举例讲述。
 
问题
 
在《gcc学习笔记》一节,我已经提到过,如果要对add.c    minus.c  divide.c  multiply.c这四个中其中一个作修改,那么就需要重新编译相应的源文件,生成新的目标文件,然后再进行链接,才可以生成修改后的执行文件。大家想想,如果说我们做的是一个大工程,那文件可是成千上百个啊!如果我们还是像现在这样,一个个地重新编译文件,那效率是极其低下的。于是就出现了makefile工具解决这个问题。

什么是makefile
 
一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令.

使用规则
 
目标文件 : 先决条件
 
                  命令
 
目标文件:可以是object file、可执行文件或者是一个标签
 
先决条件:生成目标文件所需的目标或文件
 
命令:要执行的命令
 
这里要注意的是:命令这一行需要tab键开头,否则编译器是无法识别的。
 
makefile的执行,是通过比较目标文件和先决条件这两部分文件的日期,如果先决条件文件日期比较新或者目标文件不存在,那么makefile就会去执行后续定义的命令
 

实例
 
创建并编辑makefile文件(也可以命名为Makefile)

以下,我将makefile文件截图,如下:
 


如果命令行不是以tab键开始,vim编辑器是会有些提醒的。


在颜色上就没有变棕色了。
 
这里,我就拿下面这部分代码来说明
 
add.o : add.c  math.h
 
            gcc -c add.c
 
在上面,我们看add.c代码知道,add.c包含了math.h这个头文件,故它也是目标文件的先觉条件。
 
在执行前,会先比较add.o和add.c、math.h这两部分文件的日期,如果add.c或math.h文件日期比add.o新,或者add.o目标文件不存在,那么就会执行下面gcc -c add.c这个命令。
 
另外要说的一个是下面这段代码
 
clean:
          rm calculate main.o add.o divide.o minus.o multiply.o
 
clean在这里不是一个文件,是一个标签,它冒号后面什么也没有,那就是说make不会自动去找文件的依赖性,也就不会自动执行其后所定义的命令。
 
这里clean的作用是删除可执行文件和目标文件。如果想要执行这一命令,直接用make clean即可。如果要生成可执行文件,则执行make。

以上的内容,只是介绍makefile的最常用功能。如果想更深入地探讨makefile的功能,大家可以根据自己日后的需求自行学习。

Linux程序设计(原书第2版)(PDF中文版 + 源码) http://www.linuxidc.com/Linux/2011-04/34147.htm

u-boot Makefile完全解读 http://www.linuxidc.com/Linux/2013-04/83529.htm

实验平台上Makefile详细的解释 http://www.linuxidc.com/Linux/2014-01/94827.htm

Makefile之Linux内核模块的Makefile写法分析 http://www.linuxidc.com/Linux/2013-06/85842.htm

Makefile之写demo时的通用Makefile写法 http://www.linuxidc.com/Linux/2013-05/84679.htm

Makefile之大型工程项目子目录Makefile的一种通用写法 http://www.linuxidc.com/Linux/2013-05/84678.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-08/105304.htm

linux

http://chatgpt.dhexx.cn/article/f6gs1Z0H.shtml

相关文章

Makefile教程(入门介绍)

文章目录 前言一、Makefile介绍二、make和Makefile的关系三、学习makefile的意义四、编写一个简单的Makefile总结 前言 本篇文章将带大家学习Makefile&#xff0c;Makefile在文件的编译中起到重要作用&#xff0c;在Linux中我们也是经常使用到Makefile&#xff0c;下面我将会带…

VCS使用Makefile教程

在从事IC验证工作的过程中&#xff0c;其实最开始的一步不是写什么test plan或者说verification of structure&#xff0c;而是应该知道makefile怎么写&#xff0c;先写出一个通用&#xff0c;基础的编译仿真脚本&#xff0c;可能会让你编译仿真轻松一点。 这份Makefile使用教程…

Makefile教程(Makefile的结构)

文章目录 前言一、Makefile的结构二、深入案例三、Makefile中的一些技巧总结 前言 一、Makefile的结构 Makefile 通常由一系列规则组成&#xff0c;每条规则定义了如何从源文件生成目标文件。每个规则又由目标、依赖和命令三部分组成。 下面是 Makefile 规则的基本结构&…

linux初试gcc makefile菜鸟教程

linux初试gcc makefile菜鸟教程 1.实验环境 1.ubuntu16(安装教程) 2.gcc (gcc安装&#xff1a;apt install gcc) 3.make (make安装 apt install make) 用C举个小例子 2.源码 main.c /*************************************************************************> File N…

Makefile使用教程

目录 一、前言 二、VCS的常用命令参数 2.1. 一步法 2.2. 两步法 2.3. 三步法 三、常见错误 四、参考资料 一、前言 以Makefile启动VCS为例来讲解如何使用命令参数&#xff0c;VCS编译文件会引入过多参数&#xff0c;试想如果我们每次都需要终端中敲击过多参数才能运行一…

Makefile详细教程

Makefile详细教程 我编写本指南是因为我永远无法完全理解 Makefile。 他们似乎充斥着隐藏的规则和深奥的符号&#xff0c;提出简单的问题并没有得到简单的答案。 为了解决这个问题&#xff0c;我花了几个周末的时间坐下来阅读所有关于 Makefile 的内容。 我已将最关键的知识浓…

最实用的Makefile教程 真的很简单(搞不明白网上的教程写那么复杂干嘛)

前言 其实我的要求不高&#xff0c;我就是想要写个Makefile&#xff0c;把我那些需要反复编译的文件处理一下就可以了&#xff0c;所以我当时就拼命地在网上找关于Makefile的教程&#xff0c;结果看到的教程都是啰里啰嗦一大堆&#xff0c;看得我云里雾里。 大家要知道&#…

Makefile的入门完整教程(包学包会)

Makefile的完整入门教程&#xff08;实现不了来打我TAT&#xff09; 看完能够了解Makefile是什么&#xff1b;我们能用makefile做什么&#xff1b;makefile的简易使用 1、什么是Makefile Makefile 可以简单的认为是一个工程文件的编译规则&#xff0c;描述了整个工程的编译和…

Linux makefile 教程 非常详细,且易懂

最近在学习Linux下的C编程&#xff0c;买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊&#xff0c;可能是我的理解能不行。 于是google到了以下这篇文章。通俗易懂。然后把它贴出来&#xff0c;方便学习。 后记&#xff0c;看完发现这篇文章和《Linux环境下的C…

Makefile基础教程

前期准备 在真正使用Makefile之前&#xff0c;我们首先先写四个c文件和相应的h文件&#xff0c;分别是fun0.c,fun1.c,fun2.c,fun0.h,fun1.h,fun2.h以及main.c //fun0.c #include "fun0.h" void print0(){printf("hello world 0"); }//fun0.h #include &l…

Makefile教程(掌握这里足够)

众所周知&#xff0c;在Linux环境下进行项目开发那就少了使用make来构建和管理自己的工程。如果想要更加深入的学习&#xff0c;我在这里推荐一本书 https://www.jianguoyun.com/p/DZWKrLIQjKL5Bxi0z5UD 访问密码&#xff1a;KvhT2v 1. makefile的命名 默认的情况下&#xff…

Makefile 编写教程(由简至难)

目录 一、测试代码二、.c 文件与Makefile同级三、.c文件与Makefile不同级四、链接静态库 一、测试代码 本文以将main.c add.c common.h三个文件编译成一个可执行文件为例&#xff0c;来讲解Makefile的编写。以下是每个文件的代码&#xff08;很简单&#xff0c;测试用&#xf…

好看的vscode字体

vscode下载上面出现的字体(自行百度搜索) (Cascadia Code, 等线)(等线是中文, Cascadia Code是英文, 自认为比较cool的搭配, 也可以自行选择)然后放到C:\Windows\Fonts 会自动安装就完事了~ 欢迎大家关注我的公众号:<前端成长指南> 我会把我的原创作品陆续放在上面

Unity3D中字体样式

字体样式分为三种 系统默认字体 自定义字体&#xff08;包括全部字体&#xff09; 自定义字体&#xff08;不包括全部字体&#xff09;系统默认字体描述优点内存占用小缺点没有艺术效果&#xff0c;没有灵魂 自定义字体&#xff08;包括全部字体&#xff09;描述优点具有一定…

前端HTML字体和文本样式

前端HTML字体和文本样式 文章目录 前端HTML字体和文本样式1.字体样式1.1字体大小1.2 字体粗细1.3 字体样式&#xff08;是否倾斜&#xff09;1.4字体类型1.5 样式层叠问题1.6 字体复合属性 2.文本样式2.1 文本缩进2.2 文本水平对齐方式2.3文本修饰 3.行高 属性表示注意点font-s…

layui表头样式_Layui表格好看样式

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Layui表格好看样式 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术&#xff1a;web 作者&#xff1a;xq 撰写时间&#xff1a;2019.7.27 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~…

android+字体样式包,android 改变全局字体样式(第三方字体包)

android 改变全局字体样式 参考&#xff1a;http://stackoverflow.com/questions/2711858/is-it-possible-to-set-font-for-entire-application/16883281#16883281 1.将要替换的字体包放到assets下 2.具体代码&#xff1a; //设置新的字体样式 public static void setDefaultFo…

IDEA 修改字体样式

每次发现别人的IDEA字体都是这么好看&#xff0c; 今天这里推荐一款设置方法美化我们IDEA的代码&#xff0c; 代码变漂亮了&#xff0c;写代码也更带劲&#xff01;注意哦这针对的都是windows系统哦&#xff0c;mac系统就不用了&#xff0c;已经很完美了 第一步&#xff1a;下载…

7.20 Web前端-字体样式

今天为大家介绍一下关于字体的相关知识&#xff0c;这里的知识比较简单&#xff0c;因为之前的教学中我们已经接触到了一部分关于字体的知识&#xff0c;在这里我来汇总说一下。 1.长度单位&#xff1a; 长度单位就是你的字体在网页中占用的长度是多少&#xff0c;在web中不是…

9款漂亮的纯css字体样式

样式&#xff1a; 代码&#xff1a; <html> <head> </head> <style>body{text-align: center;}.hcqFont{position:relative;letter-spacing:.07em;font-size:3em;font-weight:normal;margin:0 auto}.hcqFont:before,.hcqFont:after{position:absolut…