在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中。
参考: