动态链接和静态链接的区别

纯自己理解 有任何不对欢迎改正

先提问题 静态链接和动态链接是什么?

我们用的stdio.h是动态库还是静态库?

为什么要有动态链接?

其实在很久之前没有动态链接 每个技术的提出都是为了解决一系列问题 

假如有2个文件同时引用了一个库 这个库是静态库 而静态库(c.o)里面在linux其实就是可重定位文件

a.c b.c 

静态链接就是吧这个库里面的全部文件都链接成为一个目标文件 然后再执行也就是


为什么会这样分布呢首先静态链接是直接将c.o像拼拼图一样直接拼成一个整体 而动态链接则是共享的方式存到物理内存上就是 只有在物理内存上有就能运行

那么区别就是静态是直接将c.o直接拼成一个整体 而动态则不是是在运行的时候发现这个符号没有 那么我就把这个库放入进去


可能大家会说不是还有lib文件吗那个是因为我得告诉他我要用符号 


这样我编译并不会出错 但是我一旦运行就会出错了


所以说这个是运行时候才会出问题编译和链接不会报错 所以动态库就可以说是运行时库 只有在运行的时候才会导入到一个特有的虚拟地址空间上特有的段上这个过程也叫装载

由于系统是页映射 这样如果有重复的完全可以不用转载到内存上 只需要加载一次就可以了 

参照 阿发你好  的视频 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值