Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26260
  • 博文数量: 5
  • 博客积分: 533
  • 博客等级: 一等列兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-08 13:05
文章分类
文章存档

2010年(5)

最近访客

分类:

2010-05-09 13:41:09

linux编程,库分为动静态两种。简单理解下动态库
1 可执行目标文件如果在链接阶段调用了动态链接库,此时并不会有动态库的代码加入到可执行目标文件里,只是会有相关的一些动态库的符号信息加入这个可执行目标文件。
2 那动态库的代码什么时间被调用?
答案是在程序加载的时候,此时动态连接器会根据步骤1的符号表等信息,把动态库里相关代码和数据映射到进程的0x40000000开始的区域。
3 此时虚拟存储器中就有了进程的映像了,但代码并没有从磁盘上拷贝到内存中。换句话说,操作系统的加载器没有“彻底”完成把程序从磁盘加载到内存的过程,那是什么时候由谁来完成的?
答案是虚拟存储器的缺页访问机制。
 
动态库比静态库的好处:
1 节约了空间。库里面内容在内存里只有一份拷贝,所有应用程序共享。静态库是要自己编译自己的。
2 库升级方便。程序在加载运行的时候才会真正和库打交道,省去了静态库重新编译的麻烦。
 
参考:《深入理解计算机系统》中文版 第七章 链接
阅读(1366) | 评论(5) | 转发(0) |
给主人留下些什么吧!~~

安何2010-05-22 22:29:09

7367448232010-05-22 09:57:38

fatterlinux: 可能要再看几遍,呵呵

7367448232010-05-22 09:57:18

fatterlinux2010-05-20 20:38:07

736744823: 恩   本来就这些也不了解。看了还是不太明白
可能要再看几遍,呵呵

7367448232010-05-09 18:13:33

恩   本来就这些也不了解。看了还是不太明白