我正在将一个公司开发的程序迁移到新服务器,该程序依赖于几个公司开发的库(当然还有其他库)。在当前(旧)服务器(RHEL 5)中,该库位于 /usr/lib64 中,但在新服务器(RHEL 7)中,我们希望将其放在非系统目录中。因此,我将这个库放在 /usr/local/lib64 中(连同其他所需的库),在文件 /etc/ld.so.conf.d/custom-libs.conf 中插入路径 /usr/local/lib64,并运行“ldconfig -v”以更新操作系统的缓存。除了其中一个自定义库外,所有库都正确找到。ldd 命令也找不到该库:
# ldd custom_program | grep custom_lib
custom_lib.so => not found
但是,如果我使用 var LD_LIBRARY_PATH 作为 /usr/local/lib64 运行命令,它会起作用:
# LD_LIBRARY_PATH=/usr/local/lib64 ldd custom_program | grep custom_lib
custom_lib.so => /usr/local/lib64/custom_lib.so (0x0000...)
如果我将 lib (或符号链接)放在 /usr/lib64 上,它也可以工作,但我真的想将此作为最后的手段。