错误:ld.so:对象LD_PRELOAD无法预加载:忽略

我使用的是Ubuntu 12.04。 每当我开始我的bashterminal,每当我input一个命令(并按回车),我得到这个消息:

错误:ld.so:LD_PRELOAD中的对象'/usr/lib/liblunar-calendar-preload.so'无法预加载:忽略。

真奇怪。 那么LD_PRELOAD使用的环境variables是什么? 现场发生了什么?

谢谢。

链接器需要一些环境变量来进行计算。 一个是LD_PRELOAD

man 8 ld-linux

 LD_PRELOAD A whitespace-separated list of additional, user-specified, ELF shared libraries to be loaded before all others. This can be used to selectively override functions in other shared libraries. For setuid/setgid ELF binaries, only libraries in the standard search directories that are also setgid will be loaded. 

因此,链接器将在加载其他LD_PRELOAD之前尝试加载列在LD_PRELOAD变量中的库。

可能是在变量内部列出了一个无法预加载的库。 查看LD_PRELOAD所在的.bashrc.bash_profile环境,并从变量中移除该库。

如果你想确保只有当程序lunar-calendar-gtk启动时才加载库,你可以应用这个:

您可以通过在命令前加上环境变量来设置每个命令的环境变量:

 $ LD_PRELOAD="liblunar-calendar-preload.so" printenv "LD_PRELOAD" liblunar-calendar-preload.so $ printenv "LD_PRELOAD" $ 

然后,您可以选择将其放在shell脚本中,并将lunar-calendar-gtk作为此shell脚本的符号链接,替换原始引用。 这有效地确保每次执行原始应用程序时加载库。

您将不得不将原始lunar-calendar-gtk重命名为其他内容,这可能不会太有趣,因为它可能会导致卸载和升级问题。 但是,我发现它适用于以前的Skype版本。

感谢您的回应。 我想我刚刚解决了这个问题。

由于LD_PRELOAD是用来设置一些库的扩展,所以我检查了LD预加载LD_PRELOAD的库,其中之一是“liblunar-calendar-preload.so”,不存在于路径“/ usr / lib / liblunar-calendar- preload.so“,但是我找到了一个类似的库”liblunar-calendar-preload-2.0.so“,它是前者的差异版本。

然后,我想也许liblunar-calendar-preload.so被更新到2.0版本,当系统更新,离开LD_PRELOAD仍然是“/usr/lib/liblunar-calendar-preload.so”。 因此,预加载库名称未更新为最新版本。

为了避免改变环境变量,我在路径“/ usr / lib”下创建一个符号链接,

 sudo ln -s liblunar-calendar-preload-2.0.so liblunar-calendar-preload.so 

然后我重新启动bash,错误消失了。

这意味着你输入的路径导致错误。 在您的LD_PRELOAD命令中,像错误提示一样修改路径:

 /usr/lib/liblunar-calendar-preload.so 

这可能会发生在您删除一些软件,重新启动计算机。

今天我安装一些软件,并apt remove xxxapt-get auroremove ,我得到这个错误。 当在我的电脑grep它我找不到这个。 无论执行什么命令,都会发生此错误。 但是当我重新启动我的电脑后,它消失了。