编译 - Make 命令教程 以及Makefile - 学习/实践

2023-11-17

1.应用场景

主要用于学习和使用make命令进行软件编译安装。

2.学习/操作

1.文档阅读

Make 命令教程 - 阮一峰的网络日志

Make- GNU Project - Free Software Foundation

第21讲 | 如何使用脚本语言编写周边工具?-极客时间 

2.整理输出

2.1 什么是make命令?

Make 是最常用的构建工具,诞生于1977年,主要用于C语言的项目。

但是实际上 ,任何只要某个文件有变化「就是说,可以非C文件」,就要重新构建的项目,都可以用Make构建。

2.2 为什么需要「应用场景」

简单说:

为了方便,解放精力,时间,实现自动化。

几乎所有新事物「尤其是新技术」的出现,都是为了这个目的。

但是这里还是要针对make说详细一点:

对于C语言项目,需要将源代码编译为二进制可执行文件

编译过程就需要输入编译命令,如使用 gcc xxxxx 

当C语言项目有很多的源代码文件,每个都要这样处理,最后链接在一起,

尤其是出错了或者更新了之后,都要一遍一遍的重复来,过程很烦,所以,天生懒惰的优秀的程序员就想到了一个重要的准则,重复三次的事情,就要被自动化。

所以,make这个工具就出来了,叫什么名字无所谓,主要的是这样的工具出现是历史的必然。

2.3 什么时候出现「历史发展」

诞生于1977年,主要用于C语言的项目。

2.4 怎么实践

参见

上面的文档链接,说得还是比较详细,只不过如果专门去学习,也是很枯燥的。

这里还是推荐,在没有用到的时候,先大致看下,留个印象即可,

等到用到的时候,再针对性,详细地学习一番,争取整明白,掌握。

这里简单写了demo

https://github.com/ningxiaofa/learning_of_clang/tree/main/1-%E5%85%A5%E9%97%A8/make

后续补充

...

3.问题/补充

1. makefile

简单直白地说,Makefile 是一种编译器的配置脚本文件。这个文件被 GNU Make 命令读取,并且解析其中的意义,调用 C/C++(绝大部分时候)或者别的编译器(小部分)来将源代码编译成为执行文件或者动态、静态链接库。

4.参考

参见上面文档列表

后续补充

...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编译 - Make 命令教程 以及Makefile - 学习/实践 的相关文章

随机推荐

  • MTU 和 MSS 区别

    MTU Maximum Transmit Unit 最大传输单元 即物理接口 数据链路层 提供给其上层 通常是IP层 最大一次传输数据的大小 以普遍使用的以太网接口为例 缺省MTU 1500 Byte 这是以太网接口对IP层的约束 如果IP
  • HPE Microserver GEN10升级BIOS

    到手的机子BIOS版本还是ZA10A290 非常有必要升级 便从HPE官网下载了最新的版本 ZA10A360 选择UEFI Shell方式更新 官网下载地址 https support hpe com hpesc public km pro
  • Cutter - Web视频剪辑工具原理浅析

    大厂技术 坚持周更 精选好文 最近一直在开发 web视频剪辑工具 cutter 这个工具可以方便老师们编辑拍摄好的视频 这是一个挺有意思的项目 预计分多章和大家分享介绍 本期主要介绍下其大体流程 方便大家对其原理有一个简单认知 Cutter
  • Docker安全设置

    Docker安全 Linux内核的命名空间机制提供的容器隔离安全 Linux控制组机制对容器资源的控制能力安全 Linux内核的能力机制所带来的操作权限安全 Docker程序 特别是服务端 本身的抗攻击性 其他安全增强机制对容器安全性的影响
  • elementui不生效

    1 element依赖vue 引入element js之前要引入vue js 2 element无法脱离Vue使用 html中必须new Vue el app 挂载上去
  • C语言函数大全--f开头的函数(下)

    f开头的函数 下 21 floor floorf floorl 21 1 函数说明 21 2 演示示例 21 3 运行结果 22 flushall 22 1 函数说明 22 2 演示示例 22 3 运行结果 23 fma fmaf fmal
  • php发送请求写请求头,PHP发送请求头和接收打印请求头

    一 发送请求头 发送地址 url http 127 0 0 1 2 php 请求头内容 headers array Authorization basic suibianzhi basic 使用curl发送 ch curl init url
  • 计算机缺失VCRUNTIME140.dll怎么办,那个修复方法可以解决

    计算机提示缺失VCRUNTIME140 dll怎么办 无法启动运行软件程序 如photoshop pr ae等等都是无法启动 打开电脑就报错 由于找不到VCRUNTIME140 dll 无法继续执行此代码 让我们先来了解一下VCRUNTIM
  • Gitee初练 --- 问题合集(一)

    Gitee 一 Windows找不到gpedit msc请确定文件名是否正确的提示 二 windows 10 凭据无法保存 三 解决 git pull push 每次都要输入用户名密码的问题 一 Windows找不到gpedit msc请确
  • C++ 读写二进制文件

    描述 C 来读取二进制文件 二进制文件的格式可以多种多样 比如dat index等 还可以是自行定义的格式 C 来写二进制文件 一 读二进制文件 结构体定义及头文件 include
  • 38 匹配字符串——findall()方法

    文章目录 语法 案例 语法 findall 方法用于在整个字符串中搜索所有符合正则表达式的字符串 并以列表的形式返回 如果匹配成功 则返回包含匹配结构的列表 否则返回空列表 findall 方法的语法格式如下 re findall patt
  • css实现图片叠加的几种思路(记录笔记)

    背景 实现点击事件 触发原图的img透明度降低 成为透明背景 并且加一个不透明的原图 可以用于加水印 一个div覆盖几个样式 使用的是vue vue cli搭建项目 几种思路 1 切换背景样式 设置一个key 当div元素触发点击事件 di
  • (SUB)选择排序时间、空间复杂度

    基本思想 将一组数据分为两部分 前面是已排序部分 后面是未排序部分 初始状态可认为位置 0 为已排序部分 数组下标从0开始 其余为未排序部分 每一次都从未排序部分选择一个最小元素放在已排序部分的末尾 然后已排序部分增加一个元素 未排序部分减
  • 腾讯云微计算实践:从Serverless说起,谈谈边缘计算的未来

    欢迎大家前往云 社区 获取更多腾讯海量技术实践干货哦 作者 黄文俊 腾讯云高级产品经理 曾经历过企业级存储 企业级容器平台等产品的架构与开发 对容器 微服务 无服务器 DevOps等都有浓厚兴趣 由 腾讯云serverless团队 发布在
  • selenium版本不匹配

    window10解决selenium版本不匹配问题 如运行出现以下错误 File C Python37 lib site packages selenium webdriver chrome webdriver py line 73 in
  • 【Google测试之道】 第二章 软件测试开发工程师

  • 方法简单手把手教你,空闲时间在家剪辑视频,一天收入300多

    做一个视频剪辑号 不开玩笑 认真做一个月真的能做到1w 有不少人都不知道 我们平时在手机上刷到的横屏视频都是可以赚钱的 而且也可以不用露脸拍摄视频 下班在家也可以赚取一份额外收入 很多人就会有疑问了 不露脸 不拍摄视频怎么赚钱 其实做视频剪
  • 【netty】netty HashedWheelTimer 延时队列

    1 概述 想要研究这个是因为 Flink Flink 写入 Clickhouse 大对象直接进入老年代 导致OOM 遇到了这个问题 在这个问题中 我将时间轮改小了 时间轮 512改成16个 Netty中提供的HashedWheelTimer
  • 代码实现对selenium的驱动器WebDrive的配置

    1 条件 1 使用的浏览器是Microsoft Edge 2 简述过程 代码实现 1 pip 安装 2 下载 3 解压 4 运行 3 发现一个报错 1 原因 在给出代码之前 我发现一个报错 很离谱 且听笔者慢慢细说 首先 安装了seleni
  • 编译 - Make 命令教程 以及Makefile - 学习/实践

    1 应用场景 主要用于学习和使用make命令进行软件编译安装 2 学习 操作 1 文档阅读 Make 命令教程 阮一峰的网络日志 Make GNU Project Free Software Foundation 第21讲 如何使用脚本语言