当前位置:网站首页>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》
边栏推荐
猜你喜欢

嵌入式-I2C-物理电路图

Install IIS services (Internet Information Services (Internet Information Services, abbreviated IIS, Internet Information Services)
高效率科研神器——小软件、大能量

Exception (abnormal) and Error (error) difference analysis

Redis常用命令

Tributyl-mercaptophosphane "tBuBrettPhos Pd(allyl)" OTf), 1798782-17-8

Common fluorescent dyes to modify a variety of groups and its excitation and emission wavelength data in the data

VR全景展打造专属元宇宙观展空间

Build your own web page on raspberry pie (1)

高可用 两地三中心
随机推荐
【转】最小描述长度准则MDL(Minimun Description Length)
NotImplementedError: file structure not yet supported
typescript47-函数之间的类型兼容性
Pr第四次培训笔记
typescript40-class类的保护修饰符
安装IIS服务(Internet信息服务(Internet Information Services,简写IIS,互联网信息服务)
Tag stack - stack monotonically preparatory knowledge - lt. 739. The daily temperature
曲线特征----曲线弯曲程度的探究
用scikit-learn学习谱聚类
Flink state
阿里云对象存储oss私有桶生成链接
Redis常用命令
celery工作原理图
vim命令
斐讯K2路由编译Padavan华硕固件和心得
接口和抽象
Djiango第二次培训
【Harmony OS】【ARK UI】ets use startAbility or startAbilityForResult to invoke Ability
Build your own web page on the Raspberry Pi (2)
MCM box model modeling method and source analysis of atmospheric O3