静态库和共享库的区别
在编程环境中,库是指包含某种预编译代码的实体,这些代码可以被重用于任何程序,以实现特定的功能或特性。
现在,根据代码的执行和存储方式,库被分为两种类型:静态库和共享库。
以下是静态库和共享库之间的一些重要区别。
| 序号 | 关键点 | 静态库 | 共享库 |
|---|---|---|---|
| 1 | 定义 | 静态库是指所有执行文件所需的代码都包含在一个可执行文件中,并且该文件会被编译器、链接器或绑定器复制到目标应用程序中,生成目标文件和独立的可执行文件。 | 另一方面,共享库是指目标程序中仅包含库的地址,而库的所有函数和代码都位于内存空间的特定位置,每个程序都可以访问它们,而无需创建多个副本。 |
| 2 | 导入 | 如上所述,静态库在编译时在调用方中解析,并由编译器、链接器或绑定器复制到目标应用程序中。 | 共享库由操作系统本身在目标程序执行时导入。 |
| 3 | 大小 | 静态库的大小较大,因为外部程序被构建到可执行文件中。 | 另一方面,共享库的大小要小得多,因为在执行时内存中只保留一个动态库的副本,否则它的位置是远程的。 |
| 4 | 编译 | 对于静态库,如果对外部文件进行了任何更改,则需要重新编译。 | 另一方面,对于共享库,无需重新编译可执行文件。 |
| 5 | 性能 | 静态库执行时间较长,因为每次执行时都需要加载到内存中。 | 而共享库速度更快,因为共享库代码已在内存中。 |
| 6 | 兼容性 | 在静态库中,没有观察到兼容性问题。 | 另一方面,在共享库的情况下,存在兼容性问题,因为如果库从系统中删除,目标程序将无法工作。 |
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP