当前位置:网站首页>Makefile介绍
Makefile介绍
2022-08-03 05:10:00 【El mundo】
程序的编译和链接
一个程序的诞生,
首先要把源文件编译成中间代码文件(编译compile)
然后再把大量的 Object File 合成执行文件,这个动作叫作链接(link)。
简单来说就是:源文件首先会生成中间目标文件,再由中间目标文件生成执行文件。
在编译时,编译器只检测程序语法,函数、变量是否被声明。
如果函数未被声明,编译器会给出一个警告,但依然可以生成 Object File。
而在链接程序时,链接器会在所有的 Object File 中找寻函数的实现,
如果找不到,那到就会报链接错误码(Linker Error)
什么是Makefile
make 命令执行时,需要一个 Makefile 文件,以告诉 make 命令需要怎么样的去编译和 链接程序。
在Makefile中定义了一些规则,用来描述在什么情况下,使用什么命令来构建一个特定的文件(目标文件或者可执行文件)。
Makefile 规则
1)如果这个工程没有编译过,那么我们的所有 C 文件都要编译并被链接。
2)如果这个工程的某几个 C 文件被修改了,那么我们只编译被修改的 C 文件,并重新链接目标程序。
3)如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的 C 文件, 并重新链接目标程序。
Makefile 执行过程
1、make 命令会在当前目录下查找以 Makefile (makefile 其实也可以) 命名的文件。
2、当找到 Makefile 文件以后就会按照 Makefile 中定义的规则去编译生成最终的目标文件。
3、当发现目标文件不存在,或者目标所依赖的文件比目标文件新(也就是最后修改时间比目标文件晚)的话就会执行后面的命令来更新目标。
参考:
《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.4》
《跟我一起写Makefile》
边栏推荐
- 4.如何避免缓存穿透、缓存击穿、缓存雪崩
- presto安装部署教程
- Install IIS services (Internet Information Services (Internet Information Services, abbreviated IIS, Internet Information Services)
- 【Harmony OS】【ARK UI】ets use startAbility or startAbilityForResult to invoke Ability
- 1089 狼人杀-简单版 (20 分)
- Exception(异常) 和 Error(错误)区别解析
- [Harmony OS] [ArkUI] ets development graphics and animation drawing
- mysql 存储过程 动态参数 查询执行结果
- 曲线特征----曲线弯曲程度的探究
- 2. 两数相加
猜你喜欢
junit总结
flask 面试题 问题
web安全-命令执行漏洞
Talking about GIS Data (5) - Geographic Coordinate System
Modified BiotinDIAZO-Biotin-PEG3-DBCO|diazo-biotin-tripolyethylene glycol-diphenylcyclooctyne
Secondary development of WinForm controls
typescript43-类型兼容性说明
Coordinate knowledge in digital twin campus scenarios
传说中可“免费白拿”的无线路由器 - 斐讯 K2 最简单刷 breed 与第三方固件教程
Newifi路由器第三方固件玩机教程,这个路由比你想的更强大以及智能_Newifi y1刷机_smzdm
随机推荐
用scikit-learn学习谱聚类
VR全景展打造专属元宇宙观展空间
Power button 561. An array of split
[Harmony OS] [ARK UI] ETS context basic operations
typescript39-class类的可见修饰符
Harmony OS Date ano UI 】 【 】 the basic operation
BIOTIN ALKYNE CAS: 773888-45-2 Price, Supplier
Djiango第二次培训
Shell conditional statement judgment
ss-4.2 多个eureka集群案例
1.ROS环境搭建与基础工作
Install PostgreSQL on Windows
-元素之和-
初步认识ZK
-钞票兑换-
Modelarts第一次培训
typescript44-对象之间的类兼容器
Tag stack - stack monotonically preparatory knowledge - lt. 739. The daily temperature
typescript47-函数之间的类型兼容性
tag单调栈-单调栈预备知识-lt.739. 每日温度