深入浅出计算机组成原理学习笔记:第十讲
一、为什么需要动态链接库 1、链接在生活中的应用 链接 其实有点像我们日常生活中的 标准化、模块化 生产、我们有一个可以生产标准螺帽的生产线,就可以生产很多个不同的螺帽, 只有需要螺帽,我们就可以通过链接的方式、去复制一个出来,放到需要的点,大道汽车、小到信箱 2、静态链接的缺点 但是、如我们有很多个程序都要通过装载器装载到内存的里面,那里面链接好的同样的功能代码,也需要再装载一遍、再占一遍内存空间。 这就好比,假设每个人有骑自行车的需求,那我们给每个人生产一辆自行车带在身边,固然大家都有自行车用,但是马路上肯定会特别拥挤 二、链接可以分动、静、共享运行升内存 1、内存不够用 2、链接过程 3、图解动态链接过程 三、地址无关很重要,相对地址解烦恼 1、地址无关 2、地址相关 3、动态共享库无法做到地址无关 四、PLT 和 GOT,动态链接的解决方案 1、示例代码 1、首先lib.h定义了动态链接库的一个函数show_me_the_money [root@luoahong 10]# cat lib.h #ifndef LIB_H #define LIB_H void show_me_the_money(int money); #endif 2、lib.c包含了lib.h的实际实现 [root@luoahong 10]# cat lib.c #include <stdio.h>