跳转到内容

LPI Linux 认证/管理共享库

来自维基教科书,开放的书籍,开放的世界

详细目标

[编辑 | 编辑源代码]

(LPIC-1 版本 5.0)

权重:1

描述
考生应该能够确定可执行程序所依赖的共享库,并在必要时安装它们。

关键知识领域

  • 识别共享库。
  • 识别系统库的典型位置。
  • 加载共享库。

以下是用到的文件、术语和实用程序的列表

  • ldd
  • ldconfig
  • /etc/ld.so.conf
  • LD_LIBRARY_PATH

共享库

[编辑 | 编辑源代码]

库是一组函数,程序可以使用它们来实现其功能。在构建(链接)程序时,这些库可以静态或动态地链接到可执行文件。静态链接意味着最终程序将包含其文件内的库函数。(lib.a)动态链接意味着在程序需要执行时,需要将需要的库加载到 RAM 中。(lib.so)

所有标准库的默认目录为

  • /lib:主要用于 /bin 程序。
  • /usr/lib:主要用于 /usr/bin 程序。

文件/etc/ld.so.conf用于系统指定其他库位置。要构建运行时加载程序使用的所有可用库的缓存文件,请使用 ldconfig。文件/etc/ld.so.cache将被生成。

库依赖

[编辑 | 编辑源代码]

要打印共享程序或库依赖项,请使用 ldd。

ldd [-vdr] program|library

示例

$ ldd -d -v /bin/cp
  libc.so.6 => /lib/libc.so.6 (0x40027000)
  /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

  Version information:
  /bin/cp:
               libc.so.6 (GLIBC_2.1.3) => /lib/libc.so.6
               libc.so.6 (GLIBC_2.1) => /lib/libc.so.6
               libc.so.6 (GLIBC_2.2) => /lib/libc.so.6
               libc.so.6 (GLIBC_2.0) => /lib/libc.so.6
  /lib/libc.so.6:
               ld-linux.so.2 (GLIBC_2.1.1) => /lib/ldlinux.so.2
               ld-linux.so.2 (GLIBC_2.2.3) => /lib/ldlinux.so.2
               ld-linux.so.2 (GLIBC_2.1) => /lib/ldlinux.so.2
               ld-linux.so.2 (GLIBC_2.2) => /lib/ld-linux.so.2
               ld-linux.so.2 (GLIBC_2.0) => /lib/ld-linux.so.2

运行时加载器

[编辑 | 编辑源代码]

运行时加载程序ld.so找到程序所需的库,并将其加载到 RAM 中。ld.so 的搜索顺序是

  • LD_LIBRARY_PATH
  • 缓存文件 /etc/ld.so.cache
  • 默认目录 /lib 和 /usr/lib。


华夏公益教科书