Chinaunix首页 | 论坛 | 博客
  • 博客访问: 525050
  • 博文数量: 257
  • 博客积分: 1666
  • 博客等级: 上尉
  • 技术积分: 1535
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-02 23:02
文章分类

全部博文(257)

文章存档

2013年(2)

2012年(255)

分类:

2012-07-02 10:16:22

一个编译链接好的C程序,在linux上执行的过程:exec会使用brk()函数设置当前进程的数据段;然后打开预先编译时指定好的共享库的文件,并且把共享库加载到内存中;因为程序在编译的时候,默认是使用共享库的方式,只有加载了共享库到内存,才能保证程序执行的正确性;最后执行编写的代码执行。理解程序的执行流程,是以后学习和理解多进程和多线程程序开发的基础。

Linux系统有两种程序库,一种被称为静态库static library,在程序链接的时候,把库函数的目标代码和程序连接在一起,体积庞大;另一种是动态库shared library,即共享库。

共享库是linux系统最广泛的一种程序使用方式,它的工作原理是相同功能的代码可以被多个程序共同使用。在程序加载的时候,内核会检查程序使用到的动态库是否已经加载到内存,如果没有被加载到内存,则从系统库路径搜索并且加载相关的动态库;如果动态库已经被加载到内存,程序可以直接使用而无须加载。使用动态库可以减小应用程序占用的空间和加载时间。

阅读(286) | 评论(0) | 转发(0) |
0

上一篇:linux技巧

下一篇:linux 下硬链接和软连接

给主人留下些什么吧!~~