嘉楠科技
直播中

golabs

9年用户 960经验值
擅长:可编程逻辑 电源/新能源 MEMS/传感技术 测量仪表
私信 关注
[问答]

在linux环境下 软件启动失败怎么解决?

Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
/usr/lib/x86_64-linux-gnu/libproxy/libpxbackend-1.0.so: undefined symbol: g_strv_builder_unref
Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgiolibproxy.so
/usr/lib/x86_64-linux-gnu/gio/modules/libgiognomeproxy.so: undefined symbol: g_uri_is_valid
Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgiognomeproxy.so
/home/yumo/ai/AICube_for_Ubuntu/AICube/libgnutls.so.30: version `GNUTLS_3_7_4' not found (required by /usr/lib/x86_64-linux-gnu/gio/modules/libgiognutls.so)
Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgiognutls.so
/usr/lib/x86_64-linux-gnu/gvfs/libgvfscommon.so: undefined symbol: g_task_set_static_name
Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgioremote-volume-monitor.so
/usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so: undefined symbol: g_assertion_message_cmpint
Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so
/usr/lib/x86_64-linux-gnu/gvfs/libgvfscommon.so: undefined symbol: g_task_set_static_name
Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgvfsdbus.so
(AICube:7888): GLib-GIO-ERROR **: 15:09:51.076: Settings schema 'org.gnome.settings-daemon.plugins.xsettings' does not contain a key named 'antialiasing'
Trace/breakpoint trap (core dumped)

回帖(1)

马占云

2025-6-25 17:58:10

针对软件启动失败的问题,结合错误信息分析,以下是逐步解决方案:




1. 解决Wayland警告(临时方案)


错误提示:Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome...

原因:软件可能在Wayland图形会话下兼容性不佳。

解决

切换到Xorg会话(推荐)或强制使用Wayland启动:


# 方法1:切换Xorg会话(彻底解决问题)
- 注销系统 → 登录界面选择齿轮图标 → 改为 "Ubuntu on Xorg"
- 重新登录后再次启动软件

# 方法2:强制Wayland启动(临时测试)
export QT_QPA_PLATFORM=wayland
./AICube_for_Ubunt



2. 修复库文件符号错误


错误提示:  



  • /usr/lib/.../libpxbackend-1.0.so: undefined symbol: g_strv_builder_unref  

  • /usr/lib/.../libgiognomeproxy.so: undefined symbol: g_uri_is_valid

    原因:关键库文件(glib2.0)版本不匹配或损坏。

    解决步骤:  

    # 步骤1:更新系统和关键库
    sudo apt update && sudo apt upgrade


步骤2:重新安装glib和libproxy


sudo apt install --reinstall libglib2.0-0 libproxy1v5


步骤3:重建库依赖缓存


sudo ldconfig



---

### **3. 修复GIO模块加载失败**
错误提示:  
- `Failed to load module: .../libgiolibproxy.so`  
- `Failed to load module: .../libgiognomeproxy.so`  
**原因**:GIO模块损坏或依赖缺失。  
**解决**:  
```bash
# 重新安装GIO相关模块
sudo apt install --reinstall gio libgiognome-proxy

# 重建GIO模块缓存
sudo gio-querymodules /usr/lib/x86_64-linux-gnu/gio/modules



4. 验证库文件完整性


检查关键符号是否存在:


# 检查 g_strv_builder_unref 符号
nm -D /usr/lib/x86_64-linux-gnu/libglib-2.0.so | grep g_strv_builder_unref

# 检查 g_uri_is_valid 符号
nm -D /usr/lib/x86_64-linux-gnu/libglib-2.0.so | grep g_uri_is_valid

预期输出:应显示符号地址(如 T g_strv_builder_unref)。若无输出,说明库文件损坏。




5. 其他可能方案


(1) 降级GLib版本


若更新后出现新兼容性问题,尝试降级:


# 查找可用版本
apt-cache policy libglib2.0-0

# 安装旧版(例:2.64.6-1)
sudo apt install libglib2.0-0=2.64.6-1

(2) 设置LD_PRELOAD


临时规避符号缺失:


# 查找符号所在的库(通常为libglib-2.0.so)
sudo grep -r "g_strv_builder_unref" /usr/lib

# 强制预加载
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libglib-2.0.so
./AICube_for_Ubunt

(3) 检查软件依赖


确认软件所需依赖完整:


# 进入软件目录
cd /home/yumo/ai

# 使用ldd检查依赖库(替换为实际可执行文件名)
ldd AICube_for_Ubunt | grep "not found"

若有缺失库,用 sudo apt install 包名 安装。




最终建议步骤顺序



  1. 优先切换Xorg会话 → 测试启动  

  2. 若仍失败 → 重新安装库(步骤2-3)  

  3. 若符号缺失 → 验证/降级GLib  

  4. 临时方案 → 使用 LD_PRELOAD  



重要:执行所有操作后重启系统使更改生效。如果问题持续,提供错误日志片段可进一步分析。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分