![](https://csdnimg.cn/release/download_crawler_static/86297448/bg5.jpg)
静态库和动态库如何构建和加载
简单点,说话的⽅式简单点~~
上⾯的介绍貌似有点抽象啊套⽤在美团技术分享⼤会上的话就是:
静态库: ⼀堆⽬标⽂件(.o/.obj)的打包体(并⾮⼆进制⽂件)
动态库: ⼀个没有main函数的可执⾏⽂件
这⾥我们来复习下C语⾔的基本功,编译和链接
编译: 将我们的源代码⽂件编译为⽬标⽂件
链接: 将我们的各种⽬标⽂件加上⼀些第三⽅库,和系统库链接为可执
⾏⽂件。
由于某个⽬标⽂件的符号(可以理解为变量,函数等)可能来⾃其他⽬标⽂
件,其实链接这⼀步最主要的操作就是决议符号的地址。
若符号来⾃静态库(本质就是.o 的集合包)或 .o,将其纳⼊链接产物,并
确定符号地址
若符号来⾃动态库,打个标记,等启动的时候再说---交给dyld去加载和
链接符号
于是链接加装载就有了不同的情况
Load 装载:将库⽂件载⼊内存
Static Loading:启动时