Xubuntu 22.04中LD_PRELOAD无法预加载libgtk3-nocsd.so.0的错误排查与解决求助
Xubuntu 22.04中LD_PRELOAD无法预加载libgtk3-nocsd.so.0的错误排查与解决求助
大家好,我最近在Xubuntu 22.04上尝试禁用客户侧装饰(CSD),过程中遇到了一个棘手的问题,想请教各位帮忙看看怎么解决。
我的操作步骤
- 首先安装了gtk3-nocsd:
sudo apt -y install gtk3-nocsd - 接着按照网上的建议,在主目录下创建了
~/.xsessionrc文件,内容如下:# 2023-11-16 nach dem Vorschlag von https://github.com/PCMan/gtk3-nocsd # für Debian-Linux-Varianten neu erzeugt, damit gtk3-nocsd wirkt: if [ -n "$STARTUP" ]; then BASESTARTUP=${STARTUP%% *} BASESTARTUP=${BASESTARTUP##*/} if [ "$BASESTARTUP" = x-session-manager ]; then BASESTARTUP=$(basename $(readlink /etc/alternatives/x-session-manager)) fi if [ x"$BASESTARTUP" = x"${BASESTARTUP#gnome-session}" ] ; then export GTK_CSD=0 STARTUP="env LD_PRELOAD=/path/to/libgtk3-nocsd.so.0 $STARTUP" fi fi
遇到的问题
重启系统后,任务栏出现了一个红色圆圈带感叹号的通知,点进去查看发现是依赖问题,核心错误信息重复出现多次:
ERROR: ld.so: object '/path/to/libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
(第一次出现的错误消息里"ERROR"的前两个字母还丢失了)
我尝试过的解决方法
用Synaptic搜索nocsd,看到两个结果:
gtk3-nocsd:显示了版本信息,但最后一列标注为"disabled"libgtk3-nocsd0:所有列的内容都正常
我通过Synaptic重新安装了gtk3-nocsd,重启后它不再显示为disabled,但错误通知依然存在,内容和之前一致。
查找
libgtk3-nocsd.so.0的实际路径,发现它存在三个位置,其中两个和snap相关,有效的路径是:/usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0检查环境变量
LD_PRELOAD,发现它的值还是占位符/path/to/libgtk3-nocsd.so.0。于是我在/etc/bash.bashrc文件末尾添加了一行:export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0重启后,我还没来得及在终端输入
echo $LD_PRELOAD,就先弹出了之前的错误消息,但执行命令后显示的是正确的路径。然而任务栏的红色感叹号通知依然存在,错误内容也没有变化。
现在我实在不知道该怎么继续排查了,有没有大佬能指点一下下一步该做什么?
备注:内容来源于stack exchange,提问作者Adalbert Hanßen




