Linux开发工具之自动化构建工具-make/Makefile

news2024/12/23 0:48:45

文章目录

  • 1.make/Makefile的介绍
  • 2.简单编写及使用
  • 3.ACM时间
  • 4.extern的复习
  • 5.多文件的编译
    • 5.0复习翻译过程
    • 5.1多文件的构成
    • 5.2手动编译
    • 5.3利用Makefile

1.make/Makefile的介绍

make是一个命令 makefile是一个文件[makefile也对]

之前的学习都没有维护项目结构 当有多个.c文件 先编译哪个后编译哪个 自己没管过 make/Makefile: 自动化的构建项目

编写Makefile的目的:能够自动化的构建项目 可以把我们的源代码编译 自动生成可执行程序
编写Makefile: 依赖关系(小灰灰是灰太郎的儿子 有父子关系) 依赖方法(小灰灰上大学月底给灰太狼要生活费)

2.简单编写及使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

利用编写好的Makefile 可以通过make/make clean进行生成/删除可执行程序

在这里插入图片描述

这是一个Makefile文件,用于编译名为hello的C程序。

  1. 第一行指定了一个目标,即hello。
  2. 第二行是编译命令,gcc hello.c -o hello,它会使用gcc编译hello.c,并将生成的可执行文件命名为hello。
  3. 第三行是一个伪目标,即clean,用于定义清除操作。
  4. 第四行是clean目标下的命令,rm -f hello,它用于删除生成的可执行文件hello。

可以使用命令make执行该Makefile文件来进行编译和生成可执行文件。如果需要删除可执行文件,可以使用命令make clean

执行: Makefile自顶向下扫描文本 只会执行第一对目标文件 想要执行特定文件需要在make后+文件名
.PHONY修饰的目标称为伪目标: 总是被执行的(总是根据依赖关系去执行依赖方法) 理解: 多次执行make hello 会显示: 该文件已为最新文件 而多次执行make clean则没有显示

3.ACM时间

在这里插入图片描述

ACM时间

Access: 最近一次访问 因为有些文件经常被访问 所以这个时间经常需要被修改 而频繁修改存在于磁盘上的文件需要耗费时间 所以优化后: 当达到一定访问次数才会修改access
Modify: 最近一次修改文件内容的时间 当文件内容增加/减少引起文件大小变化 – 文件的属性信息也会随之改变
Change: 最近一次修改文件属性的时间

4.extern的复习

extern是什么

extern是C语言中的一个关键字,用于在源文件中声明一个在另一个源文件中定义的变量或函数。它的作用是告诉编译器在其他地方已经定义了这个变量或函数,避免重复定义。

1.在一个源文件中声明一个在另一个源文件中定义的全局变量或函数,以便在当前源文件中使用它们。

2.在一个头文件中声明一个在另一个源文件中定义的全局变量或函数,以便在多个源文件中使用它们。

例子:

// file1.c
int count; // 定义全局变量count

// file2.c
extern int count; // 声明全局变量count

file1.c定义了一个全局变量count,file2.c使用extern声明了这个全局变量,以便在file2.c中使用它。

extern关键字只是一个声明,它并不会分配内存空间。变量的实际定义和内存分配必须在某个源文件中进行。另外,如果一个变量在多个源文件中都使用了extern声明,那么它只能在其中一个源文件中进行定义

5.多文件的编译

5.0复习翻译过程

在这里插入图片描述

5.1多文件的构成

在这里插入图片描述

5.2手动编译

在这里插入图片描述

5.3利用Makefile

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Triples of Cows

题目传送门 引 模拟赛 T 4 T4 T4 , 变换挺妙的, 而且感觉转换后问题就迎刃而解了 解法 强行模拟拆点重连边显然不行,会让图的边数达到 n 2 n^2 n2 级别的 —————————————————————————————————————————————————— 考虑转…

μC/OS-II---内核:任务Task

目录 内核:多任务(ucos_ii.h文件的函数)Task创建Task创建(扩展)Task删除/请求删除Task改变Task优先级Task挂起和恢复Task信息获取Task调度器上锁和开锁 内核:多任务(ucos_ii.h文件的函数&#x…

计算机底层的秘密 摘抄笔记

https://www.bookstack.cn/read/webxiaohua-gitbook/README.md 大部分是摘抄 机器指令需要加载到内存中执行,因此需要记录下内存的起始地址和长度;同时要找到函数的入口地址并写到PC寄存器中,想一想这是不是需要一个数据结构来记录下这些信…

springCloud和dubbo的区别

两者都是现在主流的微服务框架,但却存在不少差异: 初始定位不同:SpringCloud定位为微服务架构下的一站式解决方案;Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用和治理生态环境不同:SpringCloud依…

Bean——IOC(Github上有代码)

源码 https://github.com/cmdch2017/Bean_IOC.git 获取Bean对象 BeanFactory Bean的作用域 第三方Bean需要用Bean注解 比如消息队列项目中,需要用到Json的消息转换器,这是第三方的Bean对象,所以不能用Component,而要用Bean …

C语言---插入排序、希尔排序、冒泡排序、选择排序、快速排序简单介绍

文章目录 插入排序希尔排序冒泡排序选择排序快速排序 本文主要介绍用C语言实现的一些排序方法,有插入排序、希尔排序、冒泡排序、选择排序和快速排序,文章中给出的例子都是按照升序排列的。 插入排序 若数组只有一个元素,自然不用排序&#…

[C]环境(0/0)→ 环境配置

这里写目录标题 0x00 额环境下载解压 0x00 额 写了那么多C的入门,就是没写C语言的环境配置,乘此机会写了吧。 环境下载 直接在我这下载就好了,毕竟用了挺久没啥问题的 C语言环境(gcc version 8.1.0) 解压 最后得到…

【JAVA学习笔记】66 - 本章作业(IO流)

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter19/src/com/yinhai/homework 1.使用File类和FileWriter类 (1)在判断e盘下是否有文件夹mytemp,如果没有就创建mytemp public class Homework01 {public static void main(String…

大数据技术从业者注意了!使用代理IP时避开这些误区

作为一名专业的大数据从业者,我经常需要使用HTTP代理IP进行数据爬取工作。在这个过程中,我积累了一些关于使用代理IP的经验,同时也发现了一些新手常见的误区,这些误区可能会影响你的工作的效率和数据准确性。我将分享一些关于使用…

使用超融合,网络交换机如何选型与配置?

很多用户在部署超融合集群时,都会关注网络交换机的选型与配置。我们在这篇文章中整理了一些关于网络交换机的常见提问,并邀请 SmartX 技术专家进行了详细解答。 Q1. 超融合架构下,网络交换机是如何部署的?需要多少台交换机&#x…

黑芝麻智能与香港科技园签订合作备忘录,迈向全球化发展新阶段

11月6日,黑芝麻智能与香港科技园公司举行合作签约仪式,双方将合力推动黑芝麻智能香港科技创新研发中心在科技园落地,并促进园区打造车规级高性能智能汽车计算芯片平台。黑芝麻智能首席市场营销官杨宇欣、香港科技园公司首席企业发展总监姚庆良…

学妹刚毕业那天,我连夜用Python采集了上万份岗位数据,只为给她找一份好工作

记得学妹刚毕业那天,为了不让学妹毕业就失业,连夜我就用Python采集了上万份岗位,分析出最合适她的工作。 为此,学妹连夜来我家表示感谢😍 我们开始今天的正题吧 首先要准备这些 软件 Python 3.8Pycharm 模块使用 …

棱镜七彩加入UOS主动安全防护计划(UAPP),共建信创生态

近日,在统信UOS主动安全防护计划(UAPP)技术沙龙上,2023年度第二期UAPP合作伙伴授牌发布仪式正式举行。棱镜七彩作为国内专注开源安全与软件供应链安全的创新型厂商,正式获得官方授牌,成为 UAPP 成员单位。 …

2021年09月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 对于数列3,8,11,15,17,19,25,30,44,采用“二分查找”法查找8,需要查找多少次? A:5 B:4 C:3 D:2 答案:D 按二分查找法的规律,每次先查找中间值,进行比较。 第2题…

在vue中如果头像为空时用姓名第一个字当头像

业务场景:当个人资料或者用户头像没有图片时&#xff0c;默认使用户名字中第一个汉字做头像。 效果图&#xff1a; 完整代码&#xff1a; <el-avatarsize"large" style"width: 45px; height: 45px; line-height: 45px; font-size: 24px"v-if"…

无需开发,精臣云可轻松连接用户运营、广告推广等行业应用

精臣智慧标识科技有限公司简介 武汉精臣智慧标识科技有限公司&#xff0c;是国内便携式标签打印机创新品牌和实物管理解决方案服务商。在物品标签还处在繁琐的PC打印时代&#xff0c;精臣公司便创造性地从智能便携角度出发&#xff0c;顺应移动互联时代趋势&#xff0c;推出了…

HarmonyOS开发:回调实现网络的拦截

前言 上一篇文章&#xff0c;分享了一个基于http封装的一个网络库&#xff0c;里面有一个知识点&#xff0c;在初始化的时候&#xff0c;可以设置请求头拦截和请求错误后的信息的拦截&#xff0c;具体案例如下&#xff1a; Net.getInstance().init({netErrorInterceptor: new M…

1995-2020年全国各省二氧化碳排放量面板数据

1995-2020年全国各省二氧化碳排放面板数据 1、时间&#xff1a;1995-2020 2、范围&#xff1a;全国、30省 3、来源&#xff1a;中国能源统计NJ 4、指标&#xff1a; 统计年度、地区代码、地区名称、煤炭二氧化碳排放量、焦炭二氧化碳排放量、原油二氧化碳排放量、汽油二氧…

苹果Apple ID忘了或者咨询其他问题如何让苹果客服打电话给你

环境&#xff1a; iPhone11 Apple ID 问题描述&#xff1a; 苹果Apple ID忘了或者咨询其他问题如何让苹果客服打电话给你 上次公司苹果设备&#xff0c;忘了激活锁的账户密码要向苹果申请解锁&#xff0c;打了很长电话&#xff0c;平时语音超套餐了&#xff0c;想着让他们…

python 删除特定字符所在行

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 查询文件中含有特殊字符串的行 #!/usr/bin/python # -*- coding:utf-8 -*- import re file1 open(test.txt,r) istxt re.compile(r.*if.*,re.I) for line in file1.readlines():line line.strip()ifstr re.findall(istxt…