You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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"的前两个字母还丢失了)

我尝试过的解决方法

  1. 用Synaptic搜索nocsd,看到两个结果:

    • gtk3-nocsd:显示了版本信息,但最后一列标注为"disabled"
    • libgtk3-nocsd0:所有列的内容都正常
      我通过Synaptic重新安装了gtk3-nocsd,重启后它不再显示为disabled,但错误通知依然存在,内容和之前一致。
  2. 查找libgtk3-nocsd.so.0的实际路径,发现它存在三个位置,其中两个和snap相关,有效的路径是:
    /usr/lib/x86_64-linux-gnu/libgtk3-nocsd.so.0

  3. 检查环境变量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

火山引擎 最新活动