Chinaunix首页 | 论坛 | 博客
  • 博客访问: 526999
  • 博文数量: 26
  • 博客积分: 509
  • 博客等级: 下士
  • 技术积分: 809
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-15 18:01
文章分类

全部博文(26)

文章存档

2015年(1)

2013年(6)

2012年(19)

分类: LINUX

2012-06-29 10:25:42

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

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

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

阅读(3149) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~