【问题标题】:Why "/lib/libc.so.1" is mounted on solaris 10?为什么在 solaris 10 上挂载“/lib/libc.so.1”?
【发布时间】:2023-04-11 05:10:01
【问题描述】:

为什么/lib/libc.so.1 (linker/loader) 总是挂载在Solaris 10 上?我已经尝试过mount 和df 输出。它显示了/lib/libc.so.1 条目。

【问题讨论】:

  • 您接受了一个答案,虽然陈述了正确的事实,但并未直接解决恕我直言您的“为什么要安装 libc”问题。

标签: linker solaris mount


【解决方案1】:

对于 SPARC 和 x86 体系结构,Solaris 提供优化的 C 标准库。在启动时,最适合您的机器(即利用 CPU 特定指令和功能的机器)是安装在标准机器之上的 lofs。

从 Solaris 10 开始,没有提供静态 libc,因此这个动态 libc 作为内核和用户空间之间的接口,是在 Solaris 上运行的每个程序的必需组件。

更多详情here.

有人可能会问,为什么要使用 lofs 挂载而不是像符号链接这样的轻量级功能。

原因是符号链接是持久的,即在重新启动后仍然存在。如果硬件功能发展或由于某些其他原因应该链接到错误的库,使用符号链接可能会导致系统不可用。同样,所有 Solaris 命令都动态链接到libc.so。很久没有libc.a了。

使用 lofs 挂载确保系统引导的第一阶段使用安全默认值 libc.so 完成,并且仅在正确的时间选择优化的,特别是允许在禁用所有服务的情况下进行安全引导 (@987654326 @) 不受功能更改的影响。

【讨论】:

  • 链接的文章解释了/lib/libc.so.1是动态的,系统如何选择使用哪个以及挂载什么。但是,它和这个答案都没有解释为什么使用 "mount" 而不是使用符号链接或其他使其动态可用的方式。我的猜测是使用 mount 提供了符号链接所没有的东西。我不知道那会是什么,也许有些东西需要 libc.so.1 但由于某种原因不会使用符号链接。
  • @benrifkah 有趣的一点。答案已更新。谢谢。
【解决方案2】:

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 命令。

【讨论】:

    猜你喜欢
    • 2012-11-27
    • 2011-09-23
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多