首页 > 试题广场 >

关于静态库与动态库的区别,以下说法错误的是()

[单选题]

关于静态库与动态库的区别,以下说法错误的是()

  • 加载动态库的程序运行速度相对较快
  • 静态库会被添加为程序的一部分进行使用
  • 动态库可用节省内存和磁盘空间
  • 静态库重新编译,需要将应用程序重新编译
推荐
选A
动态库的函数到实际使用的时候才加载到内存,所以运行速度较慢
编辑于 2017-03-18 09:56:52 回复(0)
静态库和动态库的优缺点?
 讲静态库和动态库之前,我们先聊聊库的概念吧。
 我们在开发一段程序的时候,不可能所有的代码都是自己写的,我们会用到很多“库”
 例如最常见的“printf”函数就是C标准库中的一个函数。我们只需要包含对应的库,调用接口并提供正确的参数就能使用了,大大方便了程序开发。
 那么什么是静态库?什么是动态库呢?
 静态库:静态库就是在编译程序时,直接讲库中的代码链接到可执行程序中,
  优点:这样做的一个优点就是可执行程序可以直接运行,并且运行效率较高(不需要额外链接)
  缺点:假如多个程序使用同一个静态库,等同于多段相同的代码分别保存在不同的可执行程序中,变相占用了更多的内存空间。
 动态库:动态库就是编译程序时,可执行程序中只保存对应的函数引用表,只有到程序执行时,再链接对应的库。
  优点:多个可执行程序共用同一个库,节省内存。
  缺点:运行可执行程序需要额外做一次链接操作,执行速度会相对慢一些。
 总结:静态库牺牲了空间效率,换取了时间效率;动态库牺牲了时间效率,换取了空间效率。没有好坏区别,只看具体需要。
 参考链接:https://blog.csdn.net/u010649766/article/details/78528601
发表于 2019-07-07 00:14:55 回复(0)

1静态链接库的优点 

 (1)代码装载速度快,执行速度略比动态链接库快; 

 (2)只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题,可避免DLL地狱等问题。 

2动态链接库的优点 

 (1)更加节省内存并减少页面交换;

 (2) DLL文件与EXE文件独立,只要输出接口不变(即名称、参数、返回值类型和调用约定不变),更换DLL文件不会对EXE文件造成任何影响,因而极大地提高了可维护性和可扩展性;

 (3)不同编程语言编写的程序只要按照函数调用约定就可以调用同一个DLL函数;

 (4)适用于大规模的软件开发,使开发过程独立、耦合度小,便于不同开发者和开发组织之间进行开发和测试。

3不足之处

 (1)使用静态链接生成的可执行文件体积较大,包含相同的公共代码,造成浪费;

 (2)使用动态链接库的应用程序不是自完备的,它依赖的DLL模块也要存在,如果使用载入时动态链接,程序启动时发现DLL不存在,系统将终止程序并给出错误信息。而使用运行时动态链接,系统不会终止,但由于DLL中的导出函数不可用,程序会加载失败;速度比静态链接慢。当某个模块更新后,如果新模块与旧的模块不兼容,那么那些需要该模块才能运行的软件,统统撕掉。这在早期Windows中很常见。

发表于 2018-04-07 21:02:08 回复(0)
一个早就准备好的,一个是要用的时候才加载。肯定准备好的更快啊。
发表于 2017-12-27 17:29:00 回复(0)
静态库是提前准备好的,加载速度快。动态库需要使用的时候加载,加载速度慢。
发表于 2019-05-21 22:40:47 回复(0)
动态库的函数使用时才加载,速度较慢
编辑于 2017-08-04 10:45:00 回复(0)
选A
发表于 2016-12-10 10:44:47 回复(0)
实际上,加载动态库的程序在启动时需要花费额外的时间来加载和链接动态库,因此相对于静态库,加载动态库的程序运行速度可能会稍慢一些。

 静态库(Static Library)和动态库(Dynamic Library)区别:

1. 编译时链接和运行时链接:静态库在编译时会被完整地链接到可执行文件中,因此在运行时不需要依赖外部的库文件。而动态库在编译时只会链接一些必要的信息,而实际的库文件在运行时才会被加载和链接。

 

2. 文件大小:静态库会将所有的代码和数据都包含在库文件中,因此静态库的文件大小相对较大。而动态库只包含一部分必要的信息,因此动态库的文件大小相对较小。

 

3. 内存占用:静态库在可执行文件中被完整地加载到内存中,因此会占用更多的内存空间。而动态库在运行时才会被加载到内存中,因此可以节省内存空间。

 

4. 更新和维护:对于静态库,如果库文件发生了更新或修复,需要重新编译和链接整个程序。而对于动态库,只需要替换库文件即可,不需要重新编译和链接整个程序。

 

5. 共享性:动态库可以被多个程序共享使用,节省了磁盘空间和内存空间。而静态库每个程序都需要拷贝一份,无法共享

 

6. 可移植性:静态库在不同的平台和操作系统上可以直接使用,不需要额外的依赖。而动态库需要根据不同的平台和操作系统编译和链接,需要额外的依赖。

 

需要根据具体的需求和场景来选择使用静态库还是动态库。静态库适合于对程序的独立性要求较高的情况,而动态库适合于需要共享和更新的情况。


发表于 2023-11-07 11:38:21 回复(0)
选错误的。。。。。。
发表于 2019-12-31 15:16:19 回复(0)
c选项不对吗?我查了一下说可以节省。不明白
发表于 2018-08-08 13:09:34 回复(1)

动态的应该比较慢

发表于 2018-06-23 12:28:21 回复(0)
动态链接库的symbol和函数的访问与调用在运行时依赖dynamic linker对plt和got进行操作,对比静态库是额外的overhead
发表于 2017-03-16 08:00:37 回复(0)