【发布时间】:2022-01-14 16:45:46
【问题描述】:
我正在尝试安装一个将在此节点上普遍使用的库。当前,该库安装在包含其版本名称 /opt/sample-x.y.z/lib/libsample.so 的位置。理想情况下,我希望能够更新库,更改 sys 配置,而不是因为需要更改琐碎更改的路径而打扰其他开发人员。我已将库目录添加到 /etc/ld.so.conf.d/sample.conf 并运行 ldconfig,但这似乎只影响加载而不是链接。
当我运行 ldconfig -v | grep sample 时,我正确地看到了 libsample.so。
但是,每当我运行ld -lsample --verbose 时,它都找不到库。在详细输出中,它详细说明了它搜索的目录,而我使用 ldconfig 添加的目录不存在。作为一种解决方法,我测试了在 /usr/lib 中向库中添加符号链接,并且 ld 能够找到它。
还有其他方法可以将库添加到默认链接器路径吗?理想情况下,我正在寻找一个可以修改的配置文件,类似于要加载的配置文件。
如果重要的话,该节点是 Centos7 节点。
【问题讨论】:
-
首先将库安装在默认搜索路径中怎么样?特别是在 /usr/lib64(对于 64 位 CentOS 7)?
-
那么你的
sample.conf看起来像atm 吗? -
@JohnBollinger 这是一种可能。我只需要在提供的安装程序之上编写包装脚本,因为默认情况下它不会将我需要的所有内容放在适当的位置。如果类似于 ld.so.conf 脚本的东西有效,它似乎是一个更快的选择,在这一点上它更像是一个一般知识问题。
-
@tink 这是非常基本的。实际的软件在几个位置都有库,但每个位置都在文件中的唯一行上捕获。没有尾随 / 在一行上。继续这个例子,它只是 /opt/sample-x.y.z/lib
标签: linux shared-libraries ld