【问题标题】:What do this ldconfig statment into this bash script?这个 ldconfig 语句在这个 bash 脚本中做了什么?
【发布时间】:2013-10-28 11:00:44
【问题描述】:

我是 Linux 的新手,我对我正在使用的 bash 脚本中发现的这个操作有一些疑问:

ldconfig -v >> /dev/null 2>&1

阅读 ldconfig 命令的手册页我可以阅读:

ldconfig 创建、更新和删除必要的链接和 缓存 (供运行时链接器 ld.so 使用)到最近共享的 在命令行上指定的目录中找到的库,在 文件 /etc/ld.so.conf 和可信目录(/usr/lib 和 /lib)。

究竟是什么意思?我使用的是 Ubuntu 系统,在 /etc/ld.so.conf 我发现:

 include /etc/ld.so.conf.d/*.conf

所以我认为这一行将我重定向到所有 .conf 文件/etc/ld.so.conf.d/ 目录

但我有些困惑……还有很多疑问:

1) .conf 文件包含哪些内容?

2) 我的 bash 脚本中的命令到底是做什么的?

Tnx

安德烈亚

【问题讨论】:

  • 我认为手册页回答了你所有的问题。您还可以阅读 ld 的手册页。您还需要哪些额外信息?

标签: linux ubuntu sh dynamic-linking


【解决方案1】:

ldconfig -v >> /dev/null 2>&1 表示将 stdout(标准输出)和 stderr(标准错误)重定向到特殊设备 /dev/null,表示无处(丢弃)。

  • > /dev/null - 正在重定向标准输出
  • 2 > &1 正在将 stderr 重定向到 stdout 的重定向位置,因为 1 是 stdout 的文件描述符,2 是 stderr 的文件描述符

关于 ldconfig: ldconfig man page

按照说明书:

ldconfig creates the necessary links and cache to the most recent shared libraries found in the directories specified on the command line

【讨论】:

  • 您只是在解释重定向部分。我猜 OP 对 ldconfig 部分更感兴趣
  • 对不起,如果我误解了那部分。为ldconfig 添加了一些信息和链接。
  • 您的脚本似乎正在导入所有库文件配置,但问题是您为什么要执行 ldconfig -v 这样的操作,这将更新库数据库(您可以说是链接器)并将其提供给您跨度>
【解决方案2】:

1) .conf 文件包含哪些内容?

ldconfig 使用配置脚本(可以使用 include 指令堆叠)来了解它应该在哪些目录中搜索库。

来自man ldconfig

/etc/ld.so.conf     File containing a list of colon, space, tab, newline, or
                    comma-separated directories in which to search for libraries.

2) 我的 bash 脚本中的命令到底是做什么的?

它更新动态链接器缓存。也就是说:如果您正在安装共享库,它将使新安装的库可用于您的系统。 (例如,在安装 libfoo.so.2.1 时,它将创建到 libfoo.so.2 的必要符号链接)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-17
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    相关资源
    最近更新 更多