linux0.12-3-6

这篇具有很好参考价值的文章主要介绍了linux0.12-3-6。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[89页]

3-6 Make程序和Makefile文件

1、 大型项目需要用Makefile来控制;
2、 make是个工具程序;
3、 需要先编写一个名称为Makefile(或makefile)的文本文件提供make执行时使用。

2-6-1 Makefile文件内容

五种元素:

1、 显式规则

用于指定何时以及怎样重新编译一个或多个被称作规则的目标的文件。
规则中明确列出了目标所依赖的被称为目标的先决条件(或依赖)的
其他文件,同时也会给出用于创建或更新目标的命令

2、 隐含规则

根据目标和对象的名称来确定何时和如何重新编译一个或多个被称作规则的目标的文件。
这种规则描述了目标是如何依赖于与目标名称相类似的文件,并会给出用于创建或更新这样的一个目标文件。

3、 变量定义

用于在一行上为一个变量定义一个文本字符串。该变量可在后续语句中被替换。
例如后面例子中的变量objects定义了所有.o文件的列表。

4、 指示符

用于指示其在读取Makefil文件时执行的特定操作。这些操作可包括读取另一个makefil文件;
确定使用或忽略makefile文件的某部分内容和从包含多行的字符串中定义一个变量。

5、 注释信息

以"#"代表注释;
Makefile文件中以制表符TAB开始的一行命令脚本被完整地被传递给shell

3-6-2 Makefile文件中的规则

target(目标):prerequisites(先决条件)
command(命令)

3-6-3 Makefile文件示例

自己可以敲一次。

3-6-4 make处理Makefile文件的方式

简单总结:如果源文件变化,对应的目标将会更新;

3-6-5 Makefile中的变量

1、 对于Makefile,典型的做法是定义一个名称为objects、OBJECTS、objs、
或者OBJ的变量来表示所有.o目标的列表。我们通常会在Makefile中使用如下
一行来定义一个变量objects:
objects = main.o kbd.o command.o display.o insert.o search.o files.o utils.objects
此后,在每一处需要列出.o目标文件表的地方都可以通过写上"$(objects)"来替换变量的值。

3-6-6 让make自动推断命令

1、 举一个自动推断的例子
“cc -c main.c -o main.o”
自动推到 “cc -c main.c”

3-6-7 隐含规则中的自动变量

1、 自动变量" " 的值标识规则的所有先决条件,包括它们所处目录的名称; 2 、 " ^"的值标识规则的所有先决条件,包括它们所处目录的名称; 2、 " "的值标识规则的所有先决条件,包括它们所处目录的名称;2"<"的值表示规则中的第一个先决条件;
3、 "$@"表示目标对象;
请参考make手册
4、 make程序定义隐含规则的老式方法
.c.s:
$(CC) $(CFLAGS)
-nostdinc -Iinclude -S -o $*.s $<文章来源地址https://www.toymoban.com/news/detail-416961.html

到了这里,关于linux0.12-3-6的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux0.12内核源码解读(2)-Bootsect.S

    大家好,我是呼噜噜,在上一篇文章聊聊x86计算机启动发生的事?我们了解了x86计算机启动过程,MBR、0x7c00是什么?其中当bios引导结束后,操作系统接过计算机的控制权后,发生了哪些事?本文将揭开迷雾的序章- Bootsect.S 我们先来回顾一下,上古时期计算机按下电源键的启

    2024年04月12日
    浏览(41)
  • linux0.12-10-5-rs_io.s

    [534页] 该汇编程序实现rs232串行通信中断处理过程。在进行字符的传输和存储过程中,该中断过程主要对终端的读、写缓冲队列进行操作。它把从串行线路上接收到的字符存入串行终端的读缓冲队列read_q中,或把写缓冲队列write_q中需要发送出去的字符通过串行线路发送给远端

    2024年02月06日
    浏览(37)
  • 数据湖架构Hudi(二)Hudi版本0.12源码编译、Hudi集成spark、使用IDEA与spark对hudi表增删改查

    Hadoop 3.1.3 Hive 3.1.2 Flink 1.13.6,scala-2.12 Spark 3.2.2,scala-2.12 2.1.1 环境准备 2.1.2 下载源码包 2.1.3 在pom文件中新增repository加速依赖下载 在pom文件中修改依赖的组件版本: 2.1.4 修改源码兼容hadoop3并添加kafka依赖 Hudi默认依赖的hadoop2,要兼容hadoop3,除了修改版本,还需要修改如下代

    2024年02月06日
    浏览(57)
  • Linux:编写编译脚本Makefile文件

    一、生成可执行文件 1、一个源文件编译 本例子主要区别.c及.cpp文件及编译该文件时使用的编译链。 1).c文件 2) .cpp文件 经过以上测试,总结如下: 以.cpp为后缀的文件,为c++代码。代码最好使用C++语言。也可以使用c语言。 a 代码使用c++语言,编译时必须要用g++,不能使用

    2024年02月11日
    浏览(36)
  • Linux(基础IO、文件权限、Makefile)

    目录 1、man 手册 1.1 汉化 1.2 具体使用 2、文件权限 2.1 权限理解 2.2 文件详细信息查询 2.3 权限更改 3、常用函数接口 3.1 open 3.2 read 3.3 write 3.4 close 3.5 函数使用示例 4、make与Makefile 4.1 make 与 Makefile区别 4.2 Makefile的编写 5、vim简单操作 安装中文包 使用三种方式查询open接口的详

    2024年02月11日
    浏览(50)
  • Linux驱动1:入口与出口、头文件路径、makefile编译

    目录 Linux 驱动两种运行方式 字符设备驱动框架 1、创建目录和编写文件 2、添加头文件路径 3、Makefile编写和解释 4、编译测试 第一种就是将驱动编译进 Linux 内核中,这样当 Linux 内核启动的时候就会自动运行驱动程序; 第二种就是将驱动编译成模块(Linux 下模块扩展名为.ko),

    2024年02月10日
    浏览(44)
  • 韦东山Linux教学视频中的makefile文件详细介绍

    (1)在学习韦东山Linux教学视频的时候,他的makefile并没有做详细的介绍。以至于我学了很长时间对他的makefile文件不理解。所以本文将会详细介绍韦东山Linux教学视频中的makefile文件含义。 (2)注意:我使用的是韦东山的配套i.max6ull pro开发板。 如果是其他系列开发板,mak

    2024年02月16日
    浏览(51)
  • 【Linux】make/Makefile & 进度条小程序

    目录 一,认识 make/makefile 二,实例代码 1,依赖关系 2,原理 3,项目清理 4,测试讲解 三,Linux第一个小程序-进度条 game.h game.c test.c 程序详解   会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 一个工程中的源文件不计数,其按类型、功能、模块分

    2024年02月05日
    浏览(35)
  • 【Linux】:Linux项目自动化构建工具——make/Makefile || Linux第一个小程序——进度条(简单版本)

    在本章开始给大家分享一个图片 希望对你有帮助 在这里插入图片描述 在开始本章之前 我们需要回顾一下上节课的函数的动静态库的优缺点 动态库的优点: 比较节省资源(这里说的资源不仅仅是磁盘资源 也包括网络资源 内存资源等等),不会出现太多的重复代码 缺点:对

    2024年02月05日
    浏览(44)
  • Linux0.11内核源码解析-truncate.c

    truncate文件只要实现释放指定i节点在设备上占用的所有逻辑块,包括直接块、一次间接块、二次间接块。从而将文件节点对应的文件长度截为0,并释放占用的设备空间。  

    2024年02月12日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包