IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 自动生成依赖关系 -> 正文阅读

[系统运维]自动生成依赖关系

1.编译行为带来的缺陷
预处理器将头文件中的代码直接插入源文件
编译器只通过预处理后的源文件产生目标文件
因此,规则中以源文件为依赖,命令可能无法执行

实现想法:
通过命令自动生成对文件的依赖
将生成的依赖自动包含进makefile中
当头文件改动后,自动确认需要重新编译的文件
预备工作:
Linux命令sed
编译器依赖生成选项gcc -MM(gcc -M)
linux中的sed命令:
sed是一个流编辑器,用于流文本的修改(曾、删、改、查)
sed用于流文本中的字符串替换
sed的字符串替换方式为:sed ‘s:src:des:g’
在这里插入图片描述sed的正则表达式支持
在sed中可以用正则表达式匹配替换目标
并且可以使用匹配的目标生成替换结果
在这里插入图片描述gcc关键编译选项:
生成依赖关系:
获取目标的完整依赖关系:gcc -M test.c
获取目标的部分依赖关系:gcc -MM test.c

小技巧:拆分目标的依赖
将目标的完整依赖拆分为多个部分的依赖
在这里插入图片描述
makefile中的include关键字:
类似C语言中的include
将其他文件的内容原封不动的搬入当前文件
语法:include filename 例:include foo.make *.mk $(var)
make对include关键字的处理方式:
在当前目录搜索或指定目录搜索目标文件
搜索成功:将文件内容搬入当前makefile中
搜索失败:产生警告
以文件名作为目标查找并执行对应规则
当文件名对应的规则不存在时,最终产生错误
在这里插入图片描述
makefile中命令的执行机制
规则中的每个命令默认是在一个新的进程中执行(shell)
可以通过接续符(;)将多个命令组合成一个命令
组合的命令依次在同一个进程中被执行
set -e指定发生错误后立即退出执行

解决方案的初步思路:
通过gcc -MM 和sed得到.dep依赖文件(目标的部分依赖)
技术点:规则中命令的连续执行
通过include指令包含所有的.dep依赖文件
技术点:当.dep依赖文件不存在时,使用规则自动生成

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 16:03:51  更:2022-02-28 16:04:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:19:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码