TL;DR为什么将符号链接放置到共享库更好,/etc/lib(64)/
或者为什么在其中创建 *.conf 文件更好/etc/ld.so.conf.d/
.conf 文件
假设我有我的自定义二进制文件/opt/foo/
,附带它自己的共享库。常见的方法(我知道)是将文件放置在/etc/ld.so.conf.d/foo.conf
如下位置:
# Link foo libraries. This file is included in /etc/ld.so.conf
/opt/foo/lib
/opt/foo/otherlibs
然后运行ldconfig
。
符号链接
但我发现我也可以/usr/lib
像这样将我的库链接到(或 lib64):
for f in /etc/foo/{lib,otherlibs}/*; do
ln -s $f /usr/lib64/$(basename $f)
done
然后我就不用跑ldconfig
了。
这两种方式的优缺点是什么?
我可以想象在升级应用程序或库版本时,“符号链接”方式不是很好处理。一般来说,“.conf”方式对我来说似乎更模块化和更 Linux-ish。
我偶尔会遇到这种情况,因为我们必须加密(并且仅在运行时解密)特定库。ldconfig
加密时无法识别库(仍为 ELF 格式),因此对我来说唯一合适的方法是将指向特定 *.so 文件的链接放在/usr/lib64