加载共享库时出错 --> 添加到 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>
这个问题我遇到过好几次了。
执行一些 "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>