如何设置 .so 以用于 LD_PRELOAD

如何设置 .so 以用于 LD_PRELOAD

我在运行 Docker 命令时遇到了一个问题:

ERROR: ld.so: object 'libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded (failed to map segment from shared object): ignored.

经过一番研究,我了解到无法找到 LD_PRELOAD 环境变量中提供的库。当我运行:

env | grep LD_

我回复说:

LD_PRELOAD=libgtk3-nocsd.so.0

通过 apt-get 安装这个 libgtk3 库后,我将其位于此处:

/usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0

设置 LD_PRELOAD 的正确方法是什么?我应该用库的完整路径覆盖它吗?还是应该以某种方式复制此库以使其全局可用,并将 LD_PRELOAD 保留为其当前值。

我尝试将其添加到我的~/.profile

unset LD_PRELOAD
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0

但当我重新加载我的个人资料时,我得到了以下信息:

LD_PRELOAD=libgtk3-nocsd.so.0:/usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0

由于某种原因,取消设置不会清除变量,而只是将我的路径附加到现有值,这是行不通的。

答案1

我有同样的问题。我测试了LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0在终端中运行,它解决了该终端会话的问题。但是,当我重新启动终端时,问题又回来了。

谢谢桑杰·普拉贾帕特,我将命令添加到.bashrc主文件夹中,并永久解决了该问题。但是,没有添加以下行:

export LD_PRELOAD=$LD_PRELOAD:/usr/lib/x86_64-linux-gnu/

这个对我有用:

export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0

(如果有语法错误请见谅)。

编辑:

确保你libgtk3-nocsd.so.0/usr/lib/x86_64-linux-gnu
在 nautilus 中搜索

如果你没有,请尝试sudo apt-get install gtk3-nocsd

答案2

~/.bashrc尝试在文件中添加以下行

export LD_PRELOAD=$LD_PRELOAD:/usr/lib/x86_64-linux-gnu/

相关内容