第五十二讲——程序的组成 本文共有21631个字,关键词: 从这一讲开始变得开始比较有意思了,先来讲一讲程序的组成。 软件包其实就是应用程序,程序:architecture 例如:c语言:源代码-->编译成为二进制格式 脚本类语言(需要解释器):源代码-->编译-->连接—>运行,解释器本身是二进制程序。 程序运行时还会依赖库文件,库文件又分为动态库,静态库。 静态库是封装到程序中的,动态库为共享库,存在于运行环境的特定目录中。 程序运行时在内存中大体分为以下几个部分:程序的组成:指令+数据。 text代码段,所有的指令在这里存放 date+bss数据是紧跟着代码存放的,这些数据是初始化为零的变量,大多都是全局的。 heap堆—heap堆,不停地动态分配内存的空间 stak栈—stak栈处于最底端,是往上变化的,是本地变量和其他数据的存在,。 heap和stak合起来称为堆栈,他们的作用域不同,访问指令也不同,生命周期也不同,所以分别存放。 动态库可事先已经在内存当中了,当一个程序需要调用动态库时,只需要指向这么一个内存空间,如果这个共享库没有在内存中,那么操作系统就会帮忙将动态库载入内存,并分配给进程调用。 通常来说,指令和库是只读的,其他的数据是可变的,在编程中,我们需要指定的库称为共享库。 在linux操作系统中,共享库文件以.so结尾,share object 共享对象。 我们此前讲过,一个程序想要运行,为了定义这个程序运行的特征,程序还可以通过外部文件加载一些指令,属性信息,这些外部文件称为配置文件。 配置文件中定义的属性或变量会被程序在启动时加载,其实这些配置文件中定义的为变量,程序加载的是文件定义的变量。 程序的组成部分: 1. 二进制程序 2. 库文件(自身提供的库,共享库),自身提供的库就是讲程序自身的功能以接口的形式提供给其他程序。 glibc 通用的c语言库 kernel 内核,系统调用 glibc是几乎所有程序都要用到的最底层的核心库,可能这些库的功能不够完善。一些程序安装好之后,它可能会依赖glibc提供的库,但是也有可能有其他程序调用这个程序的功能,所以这个程序将自身的某些功能当做库来实现,所以这个程序既会生成二进制程序文件,也会生成库,生成的库放到/lib,/usr/lib,自身能够调用,其他的软件也能够调用,所以共享库是由各个软件的库和glibc共同组成的。 3. 配置文件 4. 帮助文件 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 给自己讲linux 2017-01-21 评论 1418 次浏览