linux中的makefile

(码字不易,关注一下吧w~~w)

makefile文件是用来管理项目文件,通过执行make命令,make就会解析并执行makefile文件。

命名:makefile或者Makefile

规则:

目标文件:依赖文件

(tab)命令

第一个版本:

这是新建makefile文件的内容:

依赖文件不用写.h头文件

接下来执行make ,就会生成main文件

缺点:改其中一个文件,就得重新编译

第二个版本:

检查规则:

要想生成目标文件,先检查依赖条件是否都存在:

  若都存在,则比较目标时间和以依赖时间,如果依赖时间比目标时间新,则重新生成目标;否则不重新生成;

  若不存在,则往下找有没有生成依赖的规则,有则生成,没有就报错。

这是makefile文件的内容:

执行make命令后:

第二个版本可以消除第一个版本的缺点

原因:

假设add.c更新最新修改时间时

add.o(依赖文件)的时间比add.c(目标文件)的时间晚,就会执行gcc -c add.o add.c命令

紧接着main(依赖文件)的时间比add.o(目标文件)的时间晚,就会执行gcc -o main main.o add.o jian.o命令

第三个版本:

 变量:

         自定义变量:v=hello ,下文中$(v)=hello

          自带变量:CC(gcc),CPPFLAGS( -I  -->头文件所在目录),LDFLAGS(链接器选项  -L -l),CFLAGS(c编译器选项 -wall -g -c)

          (只能用在命令中)自动变量:$@  -->表示规则中的目标

                            $<    -->表示规则中的第一个条件(依赖文件)

                            $^    -->表示规则中所有条件(重复项消除重复项) 

           模式规则:

                           %.o:%.c   -->.o文件依赖与.c文件   %必须一样

通过使用变量的makefile:

 执行make:

第四个版本 :

函数:

        1:wildcard 查找指定目录下指定类型的文件

        src=$(wildcard *.c)//找到当前目录下.c文件,赋值给src

        2:patsubst 匹配替换

        obj=$(patsubst %.c,%.o,$(src))//把src变量所有.c文件替换为.o文件

执行make:

第五个版本: 

 .PHONY:clean

把clean设为为伪命令,clean就不需要依赖了。

第一个出现的目标为终极目标。

make命令就是实现终极目标

make clean 实现 clean

使用-f可以指定makefile名字

make -f mainmak clean 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/368452.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jetpack Compose系列(3)-使用列表

使用列表 在 View 体系中&#xff0c;创建自定义布局必须扩展 ViewGroup 并实现测量和布局函数。在 Compose 中&#xff0c;只需使用 Layout 可组合项编写一个(布局)函数即可。上一篇文章我们详细介绍了Column()和Row()这两各横向布局&#xff0c;这里我们继续介绍其他布局。 …

LeetCode:42. 接雨水

42. 接雨水 1&#xff09;题目2&#xff09;思路3&#xff09;代码4&#xff09;结果 1&#xff09;题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height …

Jmeter学习系列之四:测试计划元素介绍

测试计划元素 JMeter包含各种相互关联但为不同目的而设计的元素。在开始使用JMeter之前&#xff0c;最好先了解一下JMeter的一些主要元素。 注意:测试计划包含至少一个线程组。 以下是JMeter的一些主要组件: 测试计划&#xff08;Plan&#xff09;线程组(Thread Group)控制器…

每日OJ题_算法_模拟③_力扣6. Z 字形变换

目录 力扣6. Z 字形变换 解析代码 力扣6. Z 字形变换 6. Z 字形变换 难度 中等 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时&#xff0c;排列如下&#xff…

C# 读取文件中的配置信息

文章目录 定义使用文件格式代码 C#读取文件并处理&#xff1b;C# 读取文件中的配置信息。 在有的程序中&#xff0c;需要从本地文件中读取配置信息&#xff0c;以进行初始化。 定义 定义一个静态函数来获取文件信息。StreamReader 类。 /// <summary> /// 读取参数文件…

【Linux Day14 UDP网络通讯】

UDP网络通讯 UDP报文结构&#xff1a; 16位源端口&#xff1a;用于记录发送端的端口号&#xff08;占用两个字节&#xff09;16位目的端口&#xff1a;用于记录接收端的端口号&#xff08;占用两个字节&#xff09;16位UDP长度&#xff1a;确定UDP报文总长度&#xff0c;&…

React18构建Vite+Electron项目以及打包

一.先创建项目 cnpm create vite 选择React > JavaScript >cd react_vite > cnpm i >npm run dev 二.安装Electron依赖 指定版本相对稳定 cnpm i electron19.0.10 -D cnpm i vite-plugin-electron0.9.3 -D cnpm i electron-builder23.0.1 -D三.创建electron目录…

算法:阿里巴巴找黄金宝箱(II)

一、算法描述 题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上&#xff0c;无意中发现了强盗集团的藏宝地&#xff0c;藏宝地有编号从0-N的箱子&#xff0c; 每个箱子上面贴有箱子中藏有金币Q的数量。 从金币数量中选出一个数字集合&#xff0c; 并销毁贴有这些数字的每个箱子&…

242. Valid Anagram(有效的字母异位词)

问题描述 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每个字符出现的次数都相同&#xff0c;则称 s 和 t 互为字母异位词。 问题分析 此问题与383. Ransom Note(赎金信)类似&#xff0c;只是字符变为了…

绝世唐门:霍挂六个十万年魂环,一穿七灭团再现,淘汰赛顺利晋级

Hello,小伙伴们&#xff0c;我是拾荒君。 国漫《斗罗大陆2绝世唐门》第32期超前爆料&#xff0c;霍雨浩开局便释放六个十万年魂环&#xff0c;以绝对的气场碾压天灵学院代表队。首次参与高级魂师大赛&#xff0c;霍雨浩便大放异彩秀出超级霍挂&#xff0c;此等操作就连当初的唐…

【Linux】wait()和waitpid()函数

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;Linux系列专栏&#xff1a;Linux基础 &#x1f525; 给大家…

Acwing第 141 场周赛

A题 签到模拟即可 B题 单独考虑每一个a[i]&#xff0c;如果i要是答案需要指针移动多少次&#xff0c;然后算完&#xff0c;排个序&#xff0c;指针移动最少的就是答案。 #include <bits/stdc.h> #define int long long #define rep(i,a,b) for(int i (a); i < (…

利用VPN设备漏洞入侵!新型勒索软件CACTUS攻击手法分析

近期&#xff0c;亚信安全应急响应中心截获了利用VPN设备已知漏洞传播的新型勒索软件CACTUS&#xff0c;该勒索于2023年3月首次被发现&#xff0c;一直保持着活跃状态。CACTUS勒索软件通过Fortinet VPN的已知漏洞进行入侵&#xff08;黑客首先获取到VPN账号&#xff0c;再通过V…

Javascript第四个知识点:严格检查模式

在javascript首行写上"use strict" 具体作用表现在哪儿呢&#xff1f; 他让我们的代码变得更加规范 不添加"use strict"可以不用var声明变量&#xff0c;但是会在一些时候与其他地方的 i 起冲突 添加了"use strict"之后就必须用var声明变量…

滑动窗口最终弹

力扣30.串联所有单词的子串&#xff08;巨困难&#xff09; 这个最难的是什么 1.代码的编写 2.容器的使用 class Solution {List<Integer>retnew LinkedList<>();//保存字典中所有单词的频次public List<Integer> findSubstring(String s, String[] words) …

Java动态代理与静态代理

代理模式 在Java中有多达23种的设计模式&#xff08;后面Java基础更新完后&#xff0c;会找个时间详细的去写写这些设计模式&#xff09;&#xff0c;恰当的设计模式的使用能够提升代码的效率&#xff0c;简化代码的复杂性。 而今天我们要说的代理模式就是其中之一&#xff0…

车载以太网:PHY(物理层)介绍

0 工具准备 TJA1101B芯片手册 TJA1101B automotive Ethernet PHY手册 IEEE802.3-2018.pdf 1 车载以太网PHY&#xff08;物理层&#xff09;介绍 常见的普通以太网分为10BASE-2、10/100BASE-TX和1000BASE-T&#xff0c;一般都使用RJ45接口&#xff0c;对于1000BASE-T来说&#…

数据结构中的时间复杂度和空间复杂度基础

目录 数据结构 数据结构中的基本名词 数据 数据对象 数据元素 数据项 数据类型 数据对象、数据元素和数据项之间的关系 数据结构及分类 逻辑结构 物理结构 算法 算法的特点 算法设计上的要求 算法效率的衡量 时间复杂度 大O渐进表示法 最坏情况和平均情况 常…

数字化转型:企业适应新常态的关键之举_光点科技

在全球商业环境不断演变和技术日新月异的背景下&#xff0c;数字化转型已经成为企业不可回避的课题。它不仅关乎企业的未来生存与发展&#xff0c;更是适应新常态、提升竞争力的关键之举。但是&#xff0c;数字化转型并非一夜之间可以完成的任务&#xff0c;它需要全面的策略规…

面试数据结构与算法总结分类+leetcode题目目录【基础版】

&#x1f9e1;&#x1f9e1;&#x1f9e1;算法题目总结&#xff1a; 这里为大家总结数据结构与算法的题库目录&#xff0c;如果已经解释过的题目会标注链接更新&#xff0c;方便查看。 数据结构概览 Array & String 大家对这两类肯定比较清楚的&#xff0c;同时这也是面试…