ldconfig: *.so* 不是符号 link

ldconfig: *.so* is not a symbolic link

我最近接手了一些 RPM 工作,而我们的一位同事不在。在 post 安装步骤中,RPM 在特定位置安装一些库,将文件写入 /etc/ld.conf.so.d/ 包含这些文件的路径,然后 运行 s "ldconfig"。但是当调用时,很少有消息表明:"libXYZ.so* is not a symbolic link"。

我查看了文件,发现符号链接设置不正确。例如,libA.so.1 和 libA.so.1.1 是相同的文件,而不是 libA.so.1->libA.so.1.1。每当 ldconfig 在安装了 RPM 的系统上 运行 时,就会显示这些消息。

现在,没有特别的原因,我尝试通过创建一个名为 libmylib.so.1.1 的共享库来复制它。然后我创建了另一个名为 libmylib.so.1 的文件,它与之前的文件相同。我向 /etc/ld.conf.so.d 添加了一个 test.conf 文件,其中包含这些共享库的路径,然后是 运行 ldconfig。但我没有看到任何这些 "not a symlink" 消息。相反,ldconfig 为这两个文件设置了两个符号链接。该消息是否仅在特定情况下显示?

此外,当我安装共享库时,是否需要设置链接,例如:

链接器名称 -> 所以名称 -> 真实名称

手动?然后 运行 ldconfig?

这是我第一次使用 RPM 和安装共享库,所以任何意见都将不胜感激。

谢谢

通常的做法是创建符号链接,将库版本和 soname 与 building/linking 程序中使用的名称相关联。以下是对此的一些评论:

ldconfig 预计只有一个实际文件。这里有几个地方有人问过这个问题:

通常,这方面的问题是由于符号链接更新不当造成的。但是不正确的构建脚本也可能是问题所在。