加载共享库时出错 --> 添加到 LD_LIBRARY_PATH?

error while loading shared library --> add to LD_LIBRARY_PATH?

这个问题我遇到过好几次了。

执行一些 "programs" 结果类似于

error while loading shared libraries: <name of lib>.so: cannot open shared object file: No such file or directory

我的 solution/workaround 直到今天是:sudo find / -iname "<name of lib>.so"

然后我收到了 /usr/lib64/<name of lib>.so 或更具体的 /opt/tivoli/tsm/client/api/bin64/<name of lib>.so

然后我将这些路径(没有库的名称)添加到 LD_LIBRARY_PATH 环境变量中,一切正常。

但是处理这类错误消息的正确方法是什么?

我认为您无能为力。如果缺少库依赖项,则意味着那些程序没有打包好。

通常有两种处理动态库的方法:

  • 创建依赖于包含库的包的包
  • 将库包含在发行版中

标准库中的大多数程序采用第一种方法,而游戏等通常使用第二种方法,然后使用脚本在本地修改环境中运行程序,其中本地目录是前置到 LD_LIBRARY_PATH.

但是,如果这些都没有完成,则您必须尽一切努力在 LD_LIBRARY_PATH 中获取库。如果你不想污染你的环境,你可以像这样为程序创建一个脚本:

#!/bin/bash
export LD_LIBRARY_PATH=<lib_path>:$LD_LIBRARY_PATH
./<program_name>