Linux共享库的路径
大多数包括Linux在内的开源操作系统都遵守一个叫做FHS(File Hierarchy Standard)的标准,这个标准规定了系统的的系统文件该如何存放,包括各个目录的结构、组织和作用,这样有利于开源系统之间的兼容性。FHS规定,一个系统中主要有3个存放共享库的位置,分别位:
- /lib,这个位置主要存放系统关键和基础的共享库,比如动态链接器、C语言运行库、数学库等。这些主要是/bin和/sbin下程序需要用到的库,还有系统启动需要用到的库。
- /usr/lib,这个目录主要保存的是一些非系统运行时所需要的关键性库,主要是一些开发时用到的共享库,这些库一般不会被用户程序和shell用到,这个目录下还包含了开发时可能会用到的静态库、目标文件等。
- /usr/local/lib,这个目录用来设置一些跟系统本身无关的库,主要是第三方的应用程序库。比如我们在系统中安装了额python语言解释器,那么与它相关的共享库可能会被放到/usr/local/lib/python,而它的可执行文件可能被放到/usr/lobal/bin下。GNU推荐第三方的程序应该将默认的库安装到该目录下。
动态连接器查找共享库的顺序是
- 有环境变量LD_LIBRARY_PATH指定的路径
- 有缓存文件/etc/ld.so.cache指定的路径
- 默认共享库目录,先/usr/lib,然后/lib。
摘至《程序员的自我修养——连接、装载与库》

浙公网安备 33010602011771号