Linux - lib, lib32, lib64, libx32和libexec文件夹的区别

在Linux嵌入式系统中,有时在根目录下会有lib和lib32两个文件夹,或者lib32只是一个lib文件夹的链接。所以收集了一下相关知识。

----- ----- ----- ----- 

Unix系的操作系统,遵循FHS - Filesystem Hierarchy Standard,Filesystem Hierarchy Standard

类Unix系统的发行版distros包括,Fedora、CentOS、RHEL,以及Debian和BSD版,从文件系统角度来说,它们区别并不大。

Directory - /lib

包含必要的共享库和内核模块。

目的:/lib目录包含那些启动系统所需的共享库文件,以及运行根文件系统中的命令所需要的共享库文件,比如/bin和/sbin中的二进制文件。

注意1: 如果共享库仅被/usr中的二进制文件引用(如任何X Window的二进制文件),则不能放在/lib中。只有运行/bin和/sbin中的二进制文件所需的共享库可以放在这里。

注意2:/lib文件夹的主要目的是存放特定的库,这些库是在/bin和/sbin目录里的工具所需要的库,/lib中的库可以是32位或64位。

Directory - /lib<qual>

其他格式的基本共享库,不是必须的。可能是/lib32、/lib64等目录。

目的:在支持不止一种二进制格式的系统上,需要不同的共享库,所以可能有一个或多个/lib目录的变体。这通常用于支持多种二进制格式的操作系统上,用于支持64位或32位,需要相同名称但格式不同的库。

注意:在这种情况下,/lib32和/lib64可能是库的目录,而/lib是与其中一个库的符号链接。

Directory - /usr/lib

用于存放程序和软件包需要的库文件。

目的:/usr/lib里包括object files、库和内部二进制文件,这些不是由用户或shell脚本直接执行的文件。

注1: 各种独立于架构的特定应用程序静态文件和子目录必须放在/usr/share中。

应用程序可以使用/usr/lib下的一个子目录。如果一个应用程序使用一个子目录,所有应用程序专门使用的架构相关的数据必须放在该子目录中。

注2:例如,perl5子目录用于Perl 5模块和库。

Directory - /usr/lib<qual>

其他格式的库文件,不是必须的。

目的:/usr/lib<qual>的作用与/usr/lib作用相同,只是用来存放不同的二进制格式文件。

注意:在/usr/lib和/usr/lib<qual>相同的情况下(一个是另一个的符号链接),这些文件和每个应用的子目录都存在。

总结:

如果在/bin或/sbin目录下有可执行文件所需的库,这些库应该放在/lib*目录下。

如果有使用用户的应用程序和软件包的库,它们应该放在/usr/lib/*中。如果某个库需要可执行文件,但这些可执行文件不应该被用户直接调用或被root调用,它们应该放在/usr/libexec中。

参考:

directory structure - Difference between lib, lib32, lib64, libx32, and libexec - Unix & Linux Stack Exchange

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜流冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值