美文网首页
静态库和动态库

静态库和动态库

作者: 杨志聪 | 来源:发表于2023-03-11 18:06 被阅读0次

静态库和动态库

静态库

最早编写的代码,是全部写在一个文件里的,所以编译很简单,直接将该文件编译成为可以执行的应用程序。

随着代码越来越复杂,把大量的代码放进一个文件里,非常不易于管理和多人协作,后来就设计出来可以把代码分开写在不同文件里的方法。这时,编译就复杂了很多,需要先把每个文件编译为.o文件,然后再把这些.o文件链接到一起,再生成应用程序。

.o文件还可以提高编译速度。每次编译时,如果一个文件没有改动,那么这个文件就可以沿用上次编译的.o文件,不需要重新编译,从而加快了编译速度。

后来,人们为了方便,就把一些通用的代码的.o文件打包在一起使用,人们把这些打包起来的.o文件叫做库(library)。

主要使用ar这个程序来将.o文件打包,生成一个.a文件,这个.a文件就是一个库。

一个库可能包含大量的函数,我们的程序引用这个库时,往往只调用了其中少数的函数,但我们不必担心会引入多余的函数,因为现在的编译器很聪明,他只会将我们程序中引用的函数从库里面导入来,而不是导入整个库。

后来,又有了动态库的概念,为了和动态库区分开来,我们上面所说的库,现在又称为静态库。

动态库

之所以发明动态库,是因为静态库使用出现性能瓶颈:因为程序规模越来越大,使用的静态库越来越多,最终导致编译时间过长,打包的应用程序过大等问题。

动态库一般是使用ld程序来生成。ld程序将.o文件打包,生成一个.dylib文件,这个.dylib文件就是一个动态库。

在编译时,链接器并没有把动态库的代码打包的应用程序里,链接器只记录了一种承诺, 记录动态库中使用的符号名称,和动态库在运行时的路径

使用动态库的应用程序,需要依赖动态链接器(dyld)才能运行。dyld的作用,就是实现上述链接期间许下的承诺。这里不仔细展开细节。

动态库的使用,减少了编译时间,减少了应用程序的体积,但是同时增加了应用的启动时间。所以在实际开发中,选用更多的静态库,还是更多的动态库,没有统一标准,需要具体分析,找到一个合理的使用方式。

相关文章

  • iOS 静态库和动态库的制作

    静态库和动态库 一、静态库和动态库的存在形式 静态库: .a 和 .framework 动态库: .dylib 和...

  • 静态库和动态库

    静态库和动态库的存在形式静态库:.a 和 .framework动态库:.dylib 和 .framework 静态...

  • Swift 静态库调研

    一、关于库的背景知识1、静态库和动态库静态库动态库系统动态库Cocoa Touch Framework静态库 v....

  • iOS 静态库封装

    静态库和动态库 静态库和动态库存在形式 静态库:以.a 和 .framework为文件后缀名。 动态库:以.tbd...

  • iOS-SDK从无到有

    A、关于静态库和动态库 静态库:.a和.framework ,动态库:.dylib和.framework。.fra...

  • 自定义三方SDK静态库、.framework

    静态库和动态库的存在形式 静态库: .a 和 .framework动态库: .dylib 和 .framework...

  • iOS静态库与动态库

    静态库与动态库 存在形式: ①静态库:.a 和 .framework②动态库:.dylib 和 .framewor...

  • 学习笔试--静态库和动态库

    静态库和动态库的存在形式 静态库:.a和.framework 动态库:.dylib和.framework 创建自己...

  • iOS开发-----静态库.a的制作教程

    (1)静态库和动态库的存在形式 静态库:.a和.framework 动态库: .dylib 和 .framewor...

  • 打包SDK和Framework

    库:分为动态库和静态库(目前苹果不支持上传动态库) 静态库:.a和.framework 动态库:.dylib和.f...

网友评论

      本文标题:静态库和动态库

      本文链接:https://www.haomeiwen.com/subject/hgbxrdtx.html