【发布时间】:2023-04-11 05:10:01
【问题描述】:
为什么/lib/libc.so.1 (linker/loader) 总是挂载在Solaris 10 上?我已经尝试过mount 和df 输出。它显示了/lib/libc.so.1 条目。
【问题讨论】:
-
您接受了一个答案,虽然陈述了正确的事实,但并未直接解决恕我直言您的“为什么要安装 libc”问题。
为什么/lib/libc.so.1 (linker/loader) 总是挂载在Solaris 10 上?我已经尝试过mount 和df 输出。它显示了/lib/libc.so.1 条目。
【问题讨论】:
对于 SPARC 和 x86 体系结构,Solaris 提供优化的 C 标准库。在启动时,最适合您的机器(即利用 CPU 特定指令和功能的机器)是安装在标准机器之上的 lofs。
从 Solaris 10 开始,没有提供静态 libc,因此这个动态 libc 作为内核和用户空间之间的接口,是在 Solaris 上运行的每个程序的必需组件。
更多详情here.
有人可能会问,为什么要使用 lofs 挂载而不是像符号链接这样的轻量级功能。
原因是符号链接是持久的,即在重新启动后仍然存在。如果硬件功能发展或由于某些其他原因应该链接到错误的库,使用符号链接可能会导致系统不可用。同样,所有 Solaris 命令都动态链接到libc.so。很久没有libc.a了。
使用 lofs 挂载确保系统引导的第一阶段使用安全默认值 libc.so 完成,并且仅在正确的时间选择优化的,特别是允许在禁用所有服务的情况下进行安全引导 (@987654326 @) 不受功能更改的影响。
【讨论】:
libc.so 是运行用 C 编写的 ssh 或 awk 等 unix 命令并使用动态(运行时)链接所必需的。 libc.so 是指向 libc.so.1 的链接,它是用于实现您正在运行的 Solaris 10 的 C 库的“基础”版本。
Solaris 的工作方式与 Linux 对 libc 版本的工作方式不同,因为 sparc 架构有不同的版本。最小的公分母是 sparc 1。我有一个 Ultrasparc III 盒子和其他更现代的盒子。
在 libc.so.1 上尝试文件命令:file /lib/libc.so.1 为了使实用程序和其他代码从盒子中获得最大值,libc 的体系结构“sparc 设置”与盒子相匹配。阅读并尝试isalist 和isainfo 命令。
【讨论】: