我正在使用 ubuntu 12.04。每次我启动我的 bash 终端并且每次我完成输入命令(并按 enter)时,我都会收到以下消息:
错误:ld.so:无法预加载来自 LD_PRELOAD 的对象“/usr/lib/liblunar-calendar-preload.so”:忽略。
真奇怪。那么环境变量 LD_PRELOAD 是干什么用的呢?幕后发生了什么?
谢谢。
原文由 lulyon 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在使用 ubuntu 12.04。每次我启动我的 bash 终端并且每次我完成输入命令(并按 enter)时,我都会收到以下消息:
错误:ld.so:无法预加载来自 LD_PRELOAD 的对象“/usr/lib/liblunar-calendar-preload.so”:忽略。
真奇怪。那么环境变量 LD_PRELOAD 是干什么用的呢?幕后发生了什么?
谢谢。
原文由 lulyon 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您想确保 当且仅当 程序 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 很有用。
原文由 Einar 发布,翻译遵循 CC BY-SA 3.0 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答799 阅读✓ 已解决
2 回答3.2k 阅读
链接器会考虑一些环境变量。一个是
LD_PRELOAD
从
man 8 ld-linux
:因此,链接器将在加载其他库之前尝试加载
LD_PRELOAD
变量中列出的库。在变量内部列出了一个无法预加载的库可能是什么情况。查看您的
.bashrc
或.bash_profile
环境,其中设置了LD_PRELOAD
并从变量中删除该库。