还是不太理解 C 静态库和动态库?

285 天前
 nnegier

我看到一个描述,“为了方便,我们需要把 moon.o 、sun.o 、earth.o 这 3 个东西弄成一个东西。这种方法 就是 静态库 跟 动态库,静态库 是可以链接进去 程序自身,动态库是共享库,可以由多个程序共享节省空间,动态库只有用到的时候才会加载。”

它这里的程序是指单个应用还是指单个 C 语言文件呀?如果是单个应用,怎么说多个程序共享呢;如果是说单个 C 文件,那所谓的共享又是指啥呢;反正我横竖都弄不清,只知道都能用。(我个人背景是上层 Android 开发,使用的时候感觉没啥太大区别,当然了静态库快、动态库慢这个我能理解,像空间节省这个我没能理解)

7020 次点击
所在节点    C
42 条回复
junwind
283 天前
sztink
269 天前
总结一下动态库存在的意义有:
1. 代码复用和模块化:动态库提供了一种代码复用的机制,可以将常用的功能封装在库中,多个程序可以共享同一个库,避免了重复编写相同的代码,提高了开发效率。

2. 节省内存空间:多个程序可以共享同一个动态库文件,这意味着在内存中只需要加载一份动态库代码,而不是每个程序都有一份拷贝,因此可以节省内存空间。

3. 简化更新和维护:如果需要更新动态库中的功能或修复其中的 bug ,只需要更新动态库文件,而不需要重新编译和部署整个程序。这简化了更新和维护过程,减少了可能的错误。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1022210

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX