1
8
我不知道你在哪里听到的,但是当驱动器空间接近每千兆字节几美分时,减少的磁盘空间主要是一个误区。共享库的真正收益来自于这些库的安全性和错误修复更新;使用静态库的应用程序必须用新库单独重建,而使用共享库的所有应用程序都可以通过仅替换几个文件立即更新。 |
2
6
共享库不仅可以节省磁盘空间,还可以节省内存,这一点更为重要。预链接步骤在这里很重要…您不能在同一个库的两个实例之间共享内存页,除非它们加载在同一个地址,预链接允许这样做。 |
3
4
共享库不一定能节省磁盘空间或内存。 当应用程序链接到静态库时,只有应用程序使用的库的那些部分将被拉入应用程序二进制文件中。库存档文件(.a)包含对象文件(.o),如果这些文件被很好地分解,应用程序将只通过链接它使用的对象文件来使用较少的内存。共享库将在磁盘和内存中包含整个库,不管部分库是否由应用程序使用。 对于桌面和服务器系统来说,这不太可能导致总体上的胜利,但是如果您正在开发嵌入式应用程序,那么尝试静态链接所有应用程序,以查看这是否会给您带来总体上的节约。 |
4
2
好吧,也许不是答案,但是我会考虑节省内存。节省将基于第一个应用程序之后加载库的次数,因此,让我们使用一个快速脚本来了解每个库在系统上的节省量:
这将为我们节省每个库的成本,例如:
那么,总储蓄:
所以,粗略地说,在我的系统中,我节省了大约250兆的内存。你的里程数会有所不同。 |
5
2
我能够在不做大量下流工作的情况下,找到一个部分定量的答案。以下是我的(发脑)方法: 1)使用以下命令生成具有安装大小和依赖项列表的包列表:
2)分析结果并为每个包构建统计图:
在哪里?
结果以下是我的系统中依赖最多的前20个软件包列表:
在哪里?
看到libc6在上面并不奇怪。:)顺便说一句,我有一个典型的Ubuntu9.10设置,安装了一些与编程相关的软件包,以及一些地理信息系统工具。 一些统计数据:
请注意,上面完全忽略了间接依赖性(即,所有内容至少都应该间接依赖于libc6)。我真正应该做的是构建一个所有依赖关系的图表,并将其作为我的统计数据的基础。也许我会找个时间来写一篇详细而严谨的长篇博客文章。 |
CaTx · 使用带有一个大于号和两个大于号的回波的区别 2 年前 |
Ari157 · x86_64 Linux程序集中的逻辑与实现 2 年前 |
Ty Q. · 分段故障GLFW3/GLAD 2 年前 |
ShortArrow · 如何使用git管理链接源文件? 2 年前 |
Bastien L. · 多Linux Grafana集成 2 年前 |