gpt4 book ai didi

c++ - C/C++ 静态库与动态库示例

转载 作者:太空狗 更新时间:2023-10-29 19:39:46 25 4
gpt4 key购买 nike

我正在学习静态库和动态库。到目前为止,我明白为什么我需要一个动态库。万一发生变化,最好插入更新的版本,所有应用程序都会自动更新,甚至不会引起注意。

a) 非常适合插件,b) 使用同一个库的多个应用程序和c) 需要更正错误时的维护。

但是,为什么会有人使用静态库呢?我说有什么好处? sb 是否有示例以便我可以更好地理解它?是为了让产品专有吗?

编辑:由于评论中的困惑。我明白什么是静态库,也知道动态库的区别。我不明白为什么有人会使用静态库而不是源代码本身。我想我现在开始明白静态库具有以下优势:

a) 更好的代码维护b) 更快的编译时间

最佳答案

静态库和动态库之间的另一个区别在某些情况下可能变得很重要,我很惊讶没有人提到这一点。

  • 链接静态库时,符号(例如函数名)在链接(编译)期间解析,因此对库函数的调用被解析为直接调用最终可执行文件中的地址。

  • 对于动态库,这发生在运行时,当库被加载到进程空间时(通常在进程启动期间)。这些符号必须映射到进程的地址空间。根据可能大得惊人的符号数量和启动时加载的库数量,延迟可能非常明显。

关于 Linux 上的动态库的优秀深入指南 - How To Write Shared Libraries .它对我们大多数人来说太详细了,但即使略读它也会给你带来许多令人惊讶的见解。例如,它表示在 OpenOffice 1.0 版中,它必须在发布期间进行超过 150 万次字符串比较!

一种感觉的方法是将 LD_DEBUG 设置为 symbols,并将 LD_DEBUG_OUTPUT 设置为某个文件,运行程序并查看在文件中查看启动时进行的事件。

关于c++ - C/C++ 静态库与动态库示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6323289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com