当前位置:网站首页>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》
边栏推荐
猜你喜欢
【HMS core】【Ads Kit】Huawei Advertising——Overseas applications are tested in China. Official advertisements cannot be displayed
轨迹(形状)相似性判断与度量方法
typescript49-交叉类型
High availability, two locations and three centers
Flask的简单介绍及使用方法简介
Harmony OS Date ano UI 】 【 】 the basic operation
Coordinate knowledge in digital twin campus scenarios
typescript44-对象之间的类兼容器
Redis常用命令
13.< tag-动态规划和回文字串>lt.647. 回文子串 + lt.516.最长回文子序列
随机推荐
数据分析 第一篇
3. 无重复字符的最长子串
建造者模式(Builder Pattern)
ss-4.2 多个eureka集群案例
BIOTIN ALKYNE CAS: 773888-45-2 Price, Supplier
用scikit-learn学习谱聚类
轨迹(形状)相似性判断与度量方法
Shell conditional statement judgment
VR全景展打造专属元宇宙观展空间
嵌入式-I2C-物理电路图
阿里云对象存储oss私有桶生成链接
接口和抽象
typescript39-class类的可见修饰符
typescript40-class类的保护修饰符
Length n of condensed distance matrix ‘y‘ must be a binomial coefficient
web安全-SSTI模板注入漏洞
深度学习入门之GRU
presto安装部署教程
Secondary development of WinForm controls
HarmonyOS应用开发培训第二次作业