【hello Linux】Linux项目自动化构建工具-make/Makefile

news2024/10/6 12:25:49

目录

1.make/Makefile的背景

2. 实例代码

2.1 常规代码执行过程:

2.2 使用make工具执行代码程序:

3. makefile文件内容的解释

3.1 生成解决方案 

3.2 清理解决方案

4. 多文件的makefile文件书写

5. 缓冲区



 Linux🌷

1.make/Makefile的背景

1. 会不会写 makefile ,从一个侧面说明了一个人是否具备完成大型工程的能力;
2. 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中, makefile
义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新
编译,甚至于进行更复杂的功能操作;
3. makefile 带来的好处就是 ——“ 自动化编译 ,一旦写好,只需要一个 make 命令,整个工程
完全自动编译,极大的提高了软件开发的效率;
4. make 是一个命令工具,是一个解释 makefile 中指令的命令工具,一般来说,大多数的 IDE
都有这个命令,比如:Delphi make Visual C++ nmake Linux GNU make 。可见,
makefifile 都成为了一种在工程方面的编译方法;
5. make 是一条命令, makefifile 是一个文件,两个搭配使用,完成项目自动化构建。

说了它的背景,那它到底是干什么的呢?有什么用呢?

下面看个例子!

2. 实例代码

2.1 常规代码执行过程:

1. 我们首先创建一个要编写代码的.c文件;

 2. 在.c文件中编写的代码如下;

 3. 我们对它进行编译生成可执行的文件hello;

 4. 执行hello文件;

上述便是我们常规的编写一个代码,并对其进行执行的过程。

那还有没有其他办法执行程序呢?

2.2 使用make工具执行代码程序:

1. 编写要执行的.c源文件代码程序;

2. 创建makefile文件,建立起源文件和目标文件的依赖关系;

 3. 执行make我们发现出现了可执行程序hello;

 4. 执行hello程序;

经过上述例子,我们发现通过makefile工具我们也可以实现程序的编译功能。

3. makefile文件内容的解释

3.1 生成解决方案 

上述所示是make的解决方案,在命令行中输入make便会执行依赖方法中的命令。

3.2 清理解决方案

上述所示是make clean的清理解决方案,在命令行中输入make clean则会执行clean:下方的语句

综述:

编写了makefile文件后,我们输入make则意味着输入了编译的命名;

输入make clean 这意味着输入了删除可执行程序的命令。

对于我们以后在Linux系统下进行代码的编译和清理都是非常方便的。

补充:

我们通过此命令也可以完成文件的编译工作。

4. 多文件的makefile文件书写

我们也可以在makefiel文件中添加多层依赖关系,达到多文件的编译工作:

同样可以完成上述功能

5. 缓冲区

在Linux系统中是存在缓冲区的,输入的数据显示的时候不会直接显示到显示器上,而是会先

保存在一个缓冲区中,这个缓冲区是以行为单位进行刷新的,直到缓冲区满、或者是遇到

\n、或者程序结束,才会输出到显示器上。

下面给个简单的例子具体体验下:

输出hello linux!后,在下一行中停5秒,然后才会出现命令行的输出操作!

 没加\n,我们执行./hello命令后看到首先停5秒后,才输出hello linux!

这是为什么?程序难道不是顺序执行的吗?

程序当然是顺序执行的,但是hello linux!语句首先被保存在缓冲区中,此语句太短,达不到缓冲区

行刷新的要求,那么停5秒,然后程序退出时,才会将缓冲区的内容刷新到显示器上。

有没有什么办法能将缓冲区的数据立即刷新到显示器上呢?

fflush则可以达到此效果。

坚持打卡!😃

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

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

相关文章

淘宝/天猫店铺订单数据导出、销售报表、数据分析

最近有厂商提出想把天猫店铺的数据拿到后台ERP管理系统中,并能实现线下打印电子面单功能。接手这个需求按照度娘给的指引,申请天猫开发者帐号,但是。。。大厂把订单传送接口关了,只对厂商自研软件开放,还需要租用聚石塔…

力扣118杨辉三角:代码实现+注释详解+其它思考

文章目录第一部分:题目第二部分:代码第三部分:题解3.1 generate()方法解析3.2 main方法调用第四部分:思考第一部分:题目 🏠 链接:118. 杨辉三角 - 力扣(LeetCode) ⭐ 难…

在Matlab中开发AutoSAR模型的流程(自下而上)

目录 前面 创建模型,环境配置 AutoSAR配置 SWC与Runable Interface Port 前面 前面介绍了AutoSAR软件组件开发的两种方式,其中自下向上的方式,是从模型出发,流程如下。 创建模型,环境配置 1、新建模型&#x…

前端技巧总结---持续更新

易遗漏事件总结 关闭/保存后 重置 一些变量、表单 考虑业务流程 加载数据提示 移动端技巧总结 阿里图库 在原有的基础上加新图标 该代码替换掉原有的 iconfont.css ❗src 请求头要加https,要不然移动端会不显示阿里图标 onBackPress 返回上一级 onBackPr…

【Unity VR开发】结合VRTK4.0:不可移动区域

语录: 生活坏到一定程度就会好起来,因为它无法更坏。努力过后,才知道许多事情坚持坚持,就过来了。 前言: 有时候我们可能并不需要所有的区域都进行移动,而只需要部分区域进行移动,那么我们就要将…

中核武汉 x Tapdata:能源领域老牌央企如何释放数据力量,推进精细化管理

数据孤岛是一直以来的老大难问题,之前也有在寻找相关产品和解决方案,要么太重,要么不容易落地,直到偶然间看到 Tapdata。这是一个小而美的产品,专注实时数据开发领域,其异构数据实时同步能力使我们可以更专…

陶泓达:4.17午间提前布局美盘黄金原油操作建议!

黄金方面: 上周五(4月14日),美市盘中,黄金金价大幅下跌,盘中一度下跌55美元。随着黄金遭遇技术性抛售压力,回吐一周的大部分涨幅,不过,在周末之前,许多分析师表示,市场早…

MySQL索引及SQL优化

先对索引做个大概回顾,然后我们详细探讨SQL优化 索引 索引的分类 主键索引 设定为主键后数据库会自动建立索引,innodb为聚簇索引 单值索引 即一个索引只包含单个列,一个表可以有多个单列索引【建议不要超过3】 唯一索引 索引列的值必须唯一&#xff0…

算法训练第五十九天 | 503.下一个更大元素II 、42. 接雨水

单调栈part02503.下一个更大元素II题目描述思路42. 接雨水题目描述思路暴力解法双指针优化单调栈解法准备工作单调栈处理逻辑503.下一个更大元素II 题目链接:503.下一个更大元素II 参考:https://programmercarl.com/0503.%E4%B8%8B%E4%B8%80%E4%B8%AA%E…

升级长江存储最新闪存,忆恒创源发布新一代企业级NVMe SSD

2023年4月11日 —— 北京忆恒创源科技股份有限公司(Memblaze)正式发布搭载高品质国产闪存的PBlaze6 6541 系列企业级PCIe 4.0 NVMe SSD。作为 MUFP 平台化开发的最新作品,PBlaze6 6541 采用长江存储最新一代晶栈 Xtacking 3D NAND&#xff0c…

类中的那点事

c入门必看类类的基本介绍类的实例化类的6个默认成员函数构造函数析构函数拷贝构造函数赋值重载静态成员友元类 类的基本介绍 class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类…

恢复删除的文件,小白也能轻松掌握的5个方法!

案例:如何恢复删除的文件? 【各位大神!谁能帮帮我呀!一不小心把电脑里很重要的文件删除了,不知道该如何是好,求一个简单方法,感谢大家!】 在计算机使用过程中,误删文件…

Tomcat处理请求的全过程

文章目录一、组件详解二、请求处理流程1.总体流程图2.Worker线程任务流程三、源码跟踪1.Tomcat启动线程组件2.Acceptor3.Poller4.Worker总结一、组件详解 在Tomcat处理客户端请求的过程中,这里面有三个组件概念,他们都是线程,分别负责不同的…

NEWS|关于人工智能大型语言模型能否理解的争论

科学家调查了当前人工智能(AI)研究界的一场激烈的争论,即大型预先训练的语言模型是否可以说可以理解语言——以及任何类人意义上的语言编码的物理和社会情境。他们提供了支持和反对这种理解的论点,以及根据这些论点而出现的更广泛…

7个最新的时间序列分析库介绍和代码示例

时间序列分析包括检查随着时间推移收集的数据点,目的是确定可以为未来预测提供信息的模式和趋势。我们已经介绍过很多个时间序列分析库了,但是随着时间推移,新的库和更新也在不断的出现,所以本文将分享8个目前比较常用的&#xff…

SpringCloud学习(六)——Feign的简单使用

文章目录1. Feign 的使用1.1 引入依赖1.2 添加注解1.3 编写Feign客户端1.4 测试2. Feign中的自定义配置2.1.配置文件方式2.2.Java代码方式3. Feign 性能优化4. Feign的抽取式使用4.1 抽取配置4.2 引入依赖4.3 指明Client在此之前,我们服务之间需要进行调用的时候使用…

Spring Cloud Alibaba全家桶(十)——微服务网关Gateway组件

前言 本文小新为大家带来 微服务网关Gateway组件 相关知识,具体内容包括微服务网关Gateway组件(包括:Gateway核心概念,Gateway工作原理),Spring Cloud Gateway环境搭建,路由断言工厂&#xff08…

颜值即正义,献礼就业季,打造多颜色多字体双飞翼布局技术简历模版(Resume)

一年好景君须记,最是橙黄橘绿时。金三银四,秣马厉兵,没有一个好看的简历模板怎么行?无论是网上随便下载还是花钱买,都是一律千篇的老式模版,平平无奇,味同嚼蜡,没错,蜡都…

一文理解Transformer整套流程

【备注】部分图片引至他人博客,详情关注参考链接 【PS】query 、 key & value 的概念其实来源于推荐系统。基本原理是:给定一个 query,计算query 与 key 的相关性,然后根据query 与 key 的相关性去找到最合适的 value。举个例…

mysql语法大全

首先来一个全局总览,后面我会分别对每个命令进行说明: 如果你的mysql导入环境变量,可以在命令行输入: mysql -u root -p然后输入密码登录数据库 否则,打开mysql command line并输入密码进入数据库 一,基础…