当前位置:网站首页>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》
边栏推荐
- IO process thread -> thread -> day5
- Business table analysis - balance system
- 1058 选择题 (20 分)(C语言)
- C-PHY速率
- Common fluorescent dyes to modify a variety of groups and its excitation and emission wavelength data in the data
- 【转】最小描述长度准则MDL(Minimun Description Length)
- shell script loop statement
- MCM box model modeling method and source analysis of atmospheric O3
- typescript49-交叉类型
- The problem that the rosbag tool plotjuggler cannot open rosbag
猜你喜欢
随机推荐
1059 C语言竞赛 (20 分)(C语言)
breed Web刷机升级详细教材修正编译器固件说明_itkeji.top
IO process thread -> thread -> day5
Detailed explanation of MOSN reverse channel
建造者模式(Builder Pattern)
ss-4.2 多个eureka集群案例
UV decomposition of biotin - PEG2 - azide | CAS: 1192802-98-4 biotin connectors
用scikit-learn学习谱聚类
1079 延迟的回文数 (20 分)
Modified BiotinDIAZO-Biotin-PEG3-DBCO|diazo-biotin-tripolyethylene glycol-diphenylcyclooctyne
web安全-sql注入漏洞
Power button 561. An array of split
Newifi路由器第三方固件玩机教程,这个路由比你想的更强大以及智能_Newifi y1刷机_smzdm
Benchmark 第一篇 了解Benchmark
Installation of Apache DolphinScheduler version 2.0.5 distributed cluster
js实现一个 bind 函数
斐讯K2路由编译Padavan华硕固件和心得
阿里云对象存储oss私有桶生成链接
celery工作原理图
第三次HarmonyOS培训








