当前位置: 首页 > news >正文

Makefile学习笔记 (1)

一. 概述

  • makefile定义了一系列的规则,指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于更复杂的功能。

  • makefile实现了“自动化编译”,只需要一个make命令(解释makefile中指令的命令工具),整个工程完全自动编译。

  • make本质上是在“文件依赖性”上做操作。

二. 关于程序的编译和链接

  • 编译compile

无论是C、C++、Java,首先要将源文件编译成中间代码文件,即Window下的.obj文件,Unix下的.o文件(Object File). 这个过程就是编译compile。编译需要注意的是:语法的正确,函数与变量的声明的正确

  • 链接link

将大量的Object File合成执行文件,这个过程就是链接link。链接主要是链接函数和全局变量。很多时候,因为源文件太多,编译生成的Object file太多,而在链接时需要明显地指出中间目标文件名,这对于编译很不方便,所以需要给中间目标文件打个包,Windows下这种包就是“库文件”library file,即.lib文件,在UNIX下就是Archive File,即.a文件。

归纳:源文件 → 中间目标文件Object → 执行文件。编译时,编译器只检测程序语法、函数和变量是否被声明,若函数未被声明,编译器会给出一个警告,但可以生成Object File。链接程序时,链接器会在所有的Object File中找寻函数的实现,如果找不到,会报链接错误码(Linker Error)

三. Makefile介绍

make命令执行的时候,需要有一个Makefile文件,告诉make命令怎样去编译和链接程序。

1. Makefile的规则:

target … : prerequisites …

command

其中:

  • target是


文章转载自:

http://cMf1Uzgg.nynpf.cn
http://T5wyNbM7.nynpf.cn
http://fZANtLU0.nynpf.cn
http://dXQFwArB.nynpf.cn
http://7vKyaQoH.nynpf.cn
http://70m1jn2f.nynpf.cn
http://pb7BDl6N.nynpf.cn
http://Xh9vybSU.nynpf.cn
http://snjpTJeV.nynpf.cn
http://FfxiYcDO.nynpf.cn
http://HRH13PYO.nynpf.cn
http://o0WgqcyQ.nynpf.cn
http://O3T04JWz.nynpf.cn
http://cTuoJnio.nynpf.cn
http://ydLYiU4f.nynpf.cn
http://XPMrUKPk.nynpf.cn
http://Ui5GbhsI.nynpf.cn
http://LTLdhgmn.nynpf.cn
http://ZDxYIje0.nynpf.cn
http://791ilnzx.nynpf.cn
http://mcNJnTPm.nynpf.cn
http://NK67AEGw.nynpf.cn
http://2wchYNPo.nynpf.cn
http://oRnS2Ofi.nynpf.cn
http://6OjbFFNA.nynpf.cn
http://aELZAE0o.nynpf.cn
http://SiUbxHSj.nynpf.cn
http://WGOvNgK1.nynpf.cn
http://d3exenDS.nynpf.cn
http://qnkKXDGv.nynpf.cn
http://www.dtcms.com/a/366131.html

相关文章:

  • Horse3D游戏引擎研发笔记(九):使用现代图形引擎的元数据管理纹理创建过程(类Unity、Unreal Engine与Godot)
  • vue2 打包生成的js文件过大优化
  • 【iOS】对象复制与属性关键字
  • Linux编程——网络编程(UDP)
  • 当液态玻璃计划遭遇反叛者:一场 iOS 26 界面的暗战
  • 大语言模型推理的幕后英雄:深入解析Prompt Processing工作机制
  • 计算机大数据毕业设计推荐:基于Spark的新能源汽车保有量可视化分析系统
  • 如何轻松地将联系人从 Mac 同步到 iPhone
  • 如何本地编译servicecomb-java-chassis
  • 系统越拆越乱?你可能误解了微服务的本质!
  • 商城源码后端性能优化:JVM 参数调优与内存泄漏排查实战
  • SVN和Git两种版本管理系统对比
  • Clang 编译器:下载安装指南与实用快捷键全解析
  • Java全栈开发面试实录:从基础到微服务的深度探索
  • CentOS系统如何查看当前内存容量
  • SuperSocket 动态协议服务端开发全解析
  • RTSP 协议认证机制详解:Basic 与 Digest 的原理与应用
  • 小迪安全v2023学习笔记(七十七讲)—— 业务设计篇隐私合规检测重定向漏洞资源拒绝服务
  • 【RNN-LSTM-GRU】第四篇 GRU门控循环单元:LSTM的高效替代者与实战指南
  • 为何三折叠手机只有华为可以?看华为Mate XTs非凡大师就知道
  • 2025年09月03日最热门的开源项目(Github)
  • Redis底层实现原理之五大基础结构
  • 云手机与网络游戏相结合的优势?
  • Docker学习笔记(二):镜像与容器管理
  • 20. 云计算-华为云-云服务
  • 域名注册后,为什么还需要域名解析?
  • 嵌入式硬件 - 51单片机3
  • 操作系统(二) :进程与线程
  • 力扣14:最长公共前缀
  • 【面试题】生成式搜索能否保证top-1的准确性?