当前位置:网站首页>预编译,编译,汇编,链接,静态库,动态库都是什么
预编译,编译,汇编,链接,静态库,动态库都是什么
2022-06-11 08:44:00 【Currybeefer】
预编译:
预编译又称为预处理,是做一些代码文本的替换工作
将头文件展开,取消注释,替换所有宏定义的符号
编译:
将文件进行词法分析,语法分析,语义分析,符号汇总后,将代码翻译为汇编语言(汇编语言就是MOV,ADD之类的东西)
汇编:
将文件转换为二进制文件即目标文件,每一个源文件对应一个目标文件,在windows中目标文件的后缀为.obj
链接:
其实就是一个“打包”的过程,它将所有二进制形式的目标文件和系统组件组合成一个可执行文件。完成链接的过程也需要一个特殊的软件,叫做链接器。
在完成汇编后,各个目标文件还没有“联系”起来,一个目标文件中使用的函数或变量,可能定义在其他的目标文件中,也可能定义在某个链接库文件中。对于各个目标文件中缺失的函数和变量的存储地址,会在链接阶段由链接器,并最终将所有的目标文件和链接库组织成一个可执行文件。在windows下这个可执行文件后缀为.exe。
链接库:
所谓链接库,就是将一些源文件进行编译,打包后得到的二进制文件。虽然链接库是二进制文件,但无法独立运行,必须等待其它程序调用,才会被载入内存。库文件往往带有一个头文件,方便需要链接这个库的程序查看如何调用。链接库分为静态库和动态库两种。
静态库:
Windows中后缀名为.lib。静态库在编译是会直接整合到目标程序中,所打包出来的文件可以独立运行在任何地方。利用静态函数库编译成的文件会比较大,如果这个静态库由更新,就需要重新编译。
动态库:
windows中后缀名为.dll。动态库在编译的时候不会被整合到目标程序中,生成的可执行文件无法单独运行。所以编译链接后的文件中仍然有变量和函数的缺失,这些缺失会在程序运行的时候被修补。具体来讲,对于一个以动态链接方式运行的项目,首先由静态链接器将所有的目标文件组织成一个可执行文件,运行时才会将所需的动态链接库全部载入内存,由动态链接器完成可执行文件和动态库文件的链接工作。
动态链接库可以随可执行文件一同载入内存,也可以在可执行文件运行过程中载入,即可执行文件什么时候需要,动态链接库才会载入内存。
对于不同的库,链接器在链接阶段所做的工作是不同的。
对于静态库,链接器会逐个找到各目标文件中缺失的地址。采用此链接方式生成的可执行文件,可以独立载入内存运行。
对于动态库,链接器先从所有目标文件中找到部分缺失的地址,然后将所有目标文件组织成一个可执行文件。如此生成的可执行文件,仍缺失部分函数和变量的地址,待文件执行时,需连同所有的链接库文件一起载入内存,再由链接器完成剩余的地址修复工作,才能正常执行。
参考链接:
https://blog.csdn.net/yao00037/article/details/120166233
http://c.biancheng.net/dll/what_is_library.html
边栏推荐
- [Clickhouse column] user initialization of new library role
- Hibernate L2 cache
- Idea annotation settings
- 哪些Apple设备支持这次系统更新?来看你的旧Apple设备支持最新系统吗
- 并查集是什么?你还在为其烦恼?其实就是一个连通图的问题,理解起来没有那么困难
- 马志强:语音识别技术研究进展和应用落地分享丨RTC Dev Meetup
- Sword finger offer 10- ii Frog jumping on steps
- MATLAB R2022a 安装教程
- GO语言:字符串的连接、数字转化字符串
- leetcode - 518. 零钱兑换 II
猜你喜欢
随机推荐
How to apply for ASTM E108 flame retardant test for photovoltaic panels?
Getting started with Zipkin
leetcode - 230. 二叉搜索树中第K小的元素
Idea annotation settings
EN45545-2 R26垂直燃烧测试介绍
剑指 Offer 62. 圆圈中最后剩下的数字
EN 45545-2T10水平法烟密度检测的注意事项
Wood board ISO 5660-1 heat release rate mapping test
Interfaces and abstract classes
2022 Niuke winter vacation 3
并查集是什么?你还在为其烦恼?其实就是一个连通图的问题,理解起来没有那么困难
经典图论,深度优先和广度优先,拓扑,Prim和Krukal,该来温习啦
Not eligible for getting processed by all beanpostprocessors
SAP material master data archiving
处理RAW格式的图像,需要什么软件?
补2:圆环回原点问题
ActiveMQ simple tutorial, suitable for beginners, learning notes yyds
How many items should the indoor intumescent fire retardant coating meet according to BS 476-21 fire resistance standard?
Can not connect to local MySQL server through socket ‘/tmp/mysql. sock (2)‘
2、 Rendering camera data





![[software tools] screen recording software captura](/img/79/705bb40fc15322243880f3b9864f2b.jpg)



