当前位置: 首页 > news >正文

朔州网站建设手机维修网站模板

朔州网站建设,手机维修网站模板,厦门室内设计公司排名,制作企业网页1.什么是库库是写好的现有的#xff0c;成熟的#xff0c;可以复用的代码。现实中每个程序都要依赖很多基础的底层库#xff0c;不可能每个人的代码都从零开始#xff0c;因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式#xff0c;可以被操作系统载…1.什么是库库是写好的现有的成熟的可以复用的代码。现实中每个程序都要依赖很多基础的底层库不可能每个人的代码都从零开始因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式可以被操作系统载入内存执行。库有两种静态库.a、.lib和动态库.so、.dll。所谓静态、动态是指链接。回顾一下将一个程序编译成可执行程序的步骤2.从源文件编译生成可执行文件的步骤2.1编译(1)预编译即预处理主要处理在源代码文件中以“#”开始的预编译指令如宏展开、处理条件编译指令、处理#include指令等。(2)编译过程就是把预处理完的文件进行一系列词法分析、语法分析、语义分析以及优化后生成相应的汇编代码文件。(3)汇编是将汇编代码转变成机器可以执行的指令。至此C源代码文件经过预编译、编译和汇编直接输出目标文件.o文件。 这个过程也就是编译器所做的事即 将高级语言翻译成机器语言比如我们用C/C语言写的一个程序可以使用编译器将其翻译成机器可以执行的指令及数据。现代的编译器将一个源代码文件编译成一个未链接的目标文件然后由链接器最终将这些目标文件链接起来形成可执行文件。2.2链接程序设计的模块化是人们一直在追求的目标,因为当一个系统十分复杂的时候,我们不,得不将一个复杂的系统逐步分割成小的系统以达到各个突破的目的。一个复杂的软件也如此,人们把每个源代码模块独立地编译,然后按照须要将它们“组装”起来,这个组装模块的过程就是链接(Linking),链接的主要内容就是把各个模块之间相互引用的部分都处理好,使得各个模块之间能够正确地衔接。3.静态链接最基本的静态链接过程如图所示。每个模块的源代码文件(如.c)文件经过编译器编译成目标文件(Objet File,一般扩展名为.o或.obj), 目标文件和库(Library)一起链接形成最终可执行文件。而最常见的库就是运行时库(Runtime Library),它是支持程序运行的基本函数的集合。库其实是一组目标文件的包,就是一些最常用的代码编译成目标文件后打包存放。4.动态链接静态链接这种方法的确很简单,原理上很容易理解,实践上很难实现,在操作系统和硬件不发达的早期,绝大部分系统采用这种方案。随着计算机软件的发展,这种方法的缺点很,快就暴露出来了,那就是静态连接的方式对于计算机内存和磁盘的空间浪费非常严重。特别是多进程操作系统情况下,静态链接极大地浪费了内存空间,想象一下每个程序内部除了都保留着printf()函数、scanf()函数、strlen()等这样的公用库函数,还有数量相当可观的其他库函数及它们所需要的辅助数据结构。此外静态链接对程序的更新、部署和发布也会带来很多麻烦即一旦程序中有任何模块更新,整个程序就要重新链接、发布给用户。比如一个程序有20个模块,每个模块1 MB,那么每次更新任何一个模块,用户就得重新获取这个20 MB的程序。如果程序都使用静态链接,那么通过网络来更新程序将会非常不便,因为一旦程序任何位置的一个小改动,都会导致整个程序重新下载。要解决空间浪费和更新困难这两个问题最简单的办法就是把程序的模块相互分割开来,形成独立的文件,而不再将它们静态地链接在一起。简单地讲,就是不对那些组成程序的目标文件进行链接,等到程序要运行时才进行链接。也就是说,把链接这个过程推迟到了运行时再进行,这就是**动态链接(Dynamic Linking)**的基本思想。同样举个小例子最基本的静态链接过程如图所示。每个模块的源代码文件(如.c)文件经过编译器编译成目标文件(Objet File,一般扩展名为.o或.obj), 目标文件和库(Library)一起链接形成最终可执行文件。而最常见的库就是运行时库(Runtime Library),它是支持程序运行的基本函数的集合。库其实是一组目标文件的包,就是一些最常用的代码编译成目标文件后打包存放。静态链接这种方法的确很简单,原理上很容易理解,实践上很难实现,在操作系统和硬件不发达的早期,绝大部分系统采用这种方案。随着计算机软件的发展,这种方法的缺点很,快就暴露出来了,那就是静态连接的方式对于计算机内存和磁盘的空间浪费非常严重。特别是多进程操作系统情况下,静态链接极大地浪费了内存空间,想象一下每个程序内部除了都保留着printf()函数、scanf()函数、strlen()等这样的公用库函数,还有数量相当可观的其他库函数及它们所需要的辅助数据结构。此外静态链接对程序的更新、部署和发布也会带来很多麻烦即一旦程序中有任何模块更新,整个程序就要重新链接、发布给用户。比如一个程序有20个模块,每个模块1 MB,那么每次更新任何一个模块,用户就得重新获取这个20 MB的程序。如果程序都使用静态链接,那么通过网络来更新程序将会非常不便,因为一旦程序任何位置的一个小改动,都会导致整个程序重新下载。要解决空间浪费和更新困难这两个问题最简单的办法就是把程序的模块相互分割开来,形成独立的文件,而不再将它们静态地链接在一起。简单地讲,就是不对那些组成程序的目标文件进行链接,等到程序要运行时才进行链接。也就是说,把链接这个过程推迟到了运行时再进行,这就是**动态链接(Dynamic Linking)**的基本思想。同样举个小例子5. 两者的区别静态库函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。在使用静态库的情况下在编译链接可执行文件时链接器从库中复制这些函数和数据并把它们和应用程序的其它模块组合起来创建最终的可执行文件(.exe文件)。在使用动态库的时候往往提供两个文件一个引入库和一个DLL。引入库包含被DLL导出的函数和变量的符号名DLL包含实际的函数和数据。在编译链接可执行文件时只需要链接引入库DLL中的函数代码和数据并不复制到可执行文件中在运行的时候再去加载DLL访问DLL中导出的函数。总结来说二者的不同点在于代码被载入的时刻不同。-----静态库在程序编译时会被连接到目标代码中程序运行时将不再需要该静态库因此体积较大。-----动态库在程序编译时并不会被连接到目标代码中而是在程序运行是才被载入因此在程序运行时还需要动态库存在因此代码体积较小。动态库的好处是不同的应用程序如果调用相同的库那么在内存里只需要有一份该共享库的实例。带来好处的同时也会有问题如经典的DLL Hell问题关于如何规避动态库管理问题可以自行查找相关资料。
http://www.hkea.cn/news/14347540/

相关文章:

  • 一个网站开发语言百度商家
  • 安溪县住房和城乡建设网站网站备案好后
  • 便宜的vps租用网站公司网站seo优化的
  • seo站点是什么意思哪个网站帮别人做ppt
  • 网站开发的收获体会佛山知名网站建设公司
  • 南宁网站seo优化公司网站初期如何推广的
  • 专门做网站需要敲代码么如何建一个个人网站
  • 哪个网站有做视频转场的素材口碑营销的概念
  • php mysql开发网站开发网站宣传推广策划方案
  • 成化区建设局网站网店装修素材
  • 滕州网站建设优化有了 ftp服务器密码 怎么改网站
  • 企业网站网页设计的步骤Wordpress怎么做筛选功能
  • 兰州百度公司网站建设宁波网络推广产品服务
  • 广州学建网站pexels素材网站
  • 企业手机网站建设定制wordpress 微博客
  • vs做网站开发吗公司职务名称大全
  • 汕头网站制作找谁国外建筑设计网站推荐
  • 品牌网站建是啥意思门户网站开发注意事项
  • 各大知名网站开发语言腾讯如何做网站
  • 招商加盟的网站应该怎么做深圳市seo网站设计多少钱
  • 淘宝客如何做淘宝客网站三视觉平面设计网
  • 网站营销推广的公司做易拉宝的网站
  • 易企秀 旗下 网站建设wordpress 主题目录注册
  • 网站运营建设的培训建设银行上海黄浦支行网站
  • seo网站三种链接网络服务器是指为网络提供资源并对这些资源进行管理的计算机
  • 万网 网站 流程做网站划算还是做app划算
  • 茂名建站公司模板58找工作 招聘网最新招聘
  • 浙江建筑协会网站常用的软件开发的工具
  • 杭州开发网站的公司网站建设seo优化
  • 网站icp备案证明用什么程序做网站