当前位置:网站首页>黑猫带你学Makefile第2篇:程序编译的过程
黑猫带你学Makefile第2篇:程序编译的过程
2022-08-08 19:06:00 【黑猫学长呀】
本文结合个人工作/学习经验、网络资料辛苦整理/撰写而成,付费内容,禁止转载。
本文所在专栏《黑猫带你学Makefile》
1 程序如何编译、链接
想要学习makefile,就得了解代码编译链接的过程。
一般来说,无论是C、C++、还是lua,首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile)。然后再把大量的Object File合成执行文件,这个动作叫作链接(link)。
编译时,编译器需要的是语法的正确,函数与变量的声明的正确。对于后者,通常是你需要告诉编译器头文件的所在位置(头文件中应该只是声明,而定义应该放在C/C++文件中),只要所有的语法正确,编译器就可以编译出中间目标文件。一般来说,每个源文件都应该对应于一个中间目标文件(O文件或是OBJ文件)。
链接时,主要是链接函数和全局变量,所以,我们可以使用这些中间目标文件(O文件或是OBJ文件)来链接我们的应用程序。链接器并不管函数所在的源文件,只管函数的中间目标文件(Object File),在大多数时候,由于源文件太多,编译生成的中间目标文件太多,而在链接时需要明显地指出中间目标
边栏推荐
猜你喜欢
架构设计基本原则
Learn about layered architecture & SOA architecture together
[MRCTF2020]你传你码呢
PX4-Things you need to know for secondary development of flight control-Cxm
聚名十周年线上庆典正式开启,发送祝福即有好礼相赠~
传统和加密域名概述
Michael Bronstein 系列长文:迈向几何深度学习(之三)——第一个几何神经网络模型
uniapp父组件使用prop将异步的数据传给子组件
el-tree设置单选,点击完成后收起
鹅厂机器狗花式穿越10m梅花桩:前空翻、单桩跳、起身作揖...全程不打一个趔趄
随机推荐
Qt界面优化:Qt窗体控件设置
Excuse me, during the mongoshake synchronization process in the shake database, src_mongo hangs up, will the synchronization service not exit?
Will ODPS spark on Dataworks process data more efficiently than directly using ODPS SQL?
16. Learn Lua file I/O together
能力一般,却可以大厂随便横跳?强在哪里?
Word清除格式在哪里?Word清除格式使用方法
卡通渲染的历史
Performance optimization | CPU power management from the perspective of ping delay
聚名十周年线上庆典正式开启,发送祝福即有好礼相赠~
Salesforce开发之 apex操作批准过程(Approval Process)
Azure Neural TTS 持续上新,助力企业开拓小语种市场
PX4-Things you need to know for secondary development of flight control-Cxm
挖财学堂帮开通的证券账户是真的吗?安全吗
从 VLAN 到 IPVLAN: 聊聊虚拟网络设备及其在云原生中的应用
Codeforces Round #721 (Div. 2)
工程 (六) ——PointNet点云分类
Dandelion R300A 4G router, remote monitoring PLC tutorial
轻量全景查看器 pannellum初探
WPF DataGrid 展示数据
Is it safe to open an account with Qiniu Business School?Is it reliable to open an account?