我应该如何修复由于多重命名而无法找到的库?

我应该如何修复由于多重命名而无法找到的库?

我已经遇到过几次这个问题了。我有一个程序正在寻找一个库,但找不到它,即使它在 中/usr/lib/x86_64-linux-gnu

也许这是依赖程序编写方式的一个缺陷。我对此不太了解,但我希望依赖程序指定库的名称,并让系统搜索路径列表。

有人可以简单解释一下 Ubuntu 如何期望一个行为正常的程序来寻找动态库吗?

举一个具体的例子,最新的案例涉及libpcsclite.so库。Oracle 文档建议 Java(依赖程序)将在我的系统内/usr/lib64/usr/local/lib64系统上查找 - 两者都不存在。我过去在非 Java 依赖项方面也遇到过类似的问题。我的问题之一是,为什么程序会列出这样的搜索位置?Linux 是否提供了可以替代的搜索机制?

这是 Java 的问题吗?可以使用其sun.security.smartcardio.library系统属性来纠正,还是pcsclite无法正确支持多架构命名约定?如果是后者,我应该手动创建符号链接,还是可以使用类似这样的工具ldconfig来修复?

答案1

我猜问题在于你正在安装 apt (apt-get) 之外的软件包。要么使用 Ubuntu 软件包 (如果可能的话使用 ppa),要么如果你正在编译软件包,那么在编译时,使用./configure --help并指定库路径作为配置的一部分。

也可以看看:

http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html

http://www.linuxquestions.org/questions/linux-general-1/using-a-non-standard-library-path-when-compiling-software-781185/

来自第二个链接:

CFLAGS="-I/path/to/your/headers" LDFLAGS="-L/path/to/your/lib" ./configure --blah

如果您需要进一步的帮助,您必须更具体地说明“某个程序正在寻找库但找不到它” - 什么程序?您是如何安装它的?等等。

要设置你的 Java 环境,请编辑~/.pam_environment、添加:

export JAVA_HOME=/usr/java/<your version of java>
export PATH=${PATH}:${JAVA_HOME}/bin

对于所有用户(系统)编辑/etc/environment

也可以看看:https://help.ubuntu.com/community/EnvironmentVariables#Persistent_environment_variables

相关内容