为什么/lib/libc.so.1
( linker
/ loader
) 总是挂载在Solaris 10
? 我已经尝试过两者mount
并df
输出。它显示我/lib/libc.so.1
进入。
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
andisainfo
命令。
对于 SPARC 和 x86 体系结构,Solaris 提供了优化的 C 标准库。在启动时,最适合您的机器,即利用 CPU 特定指令和功能的机器,是安装在标准机器之上的lofs 。
从 Solaris 10 开始,没有提供静态 libc,因此这个动态 libc 作为内核和用户空间之间的接口,是在 Solaris 上运行的每个程序的必需组件。
更多细节在这里。
有人可能会问,为什么这是通过 lofs 挂载完成的,而不是通过像符号链接这样的轻量级功能。
原因是符号链接是持久的,即在重新启动后仍然存在。如果硬件功能发展或由于某些其他原因应该链接到错误的库,使用符号链接可能会导致系统不可用。同样,所有 Solaris 命令都动态链接到libc.so
. libc.a
很久没有了。
使用 lofs 挂载确保系统引导的第一阶段使用安全默认值完成libc.so
,并且优化的仅在正确的时间选择,特别是允许在禁用所有服务的情况下安全引导 ( -m milestone=none
) 不受功能影响。改变。