统信uos1070 应用商店启动卡logo 参考解决

从输出结果来看,尽管已经设置了 QT_PLUGIN_PATHLD_LIBRARY_PATH 来指向 /opt/deepin-shared-libs/Qt5.15.10gles,程序仍然报错,加载的 libqsqlite.so 仍来自系统路径 /usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers/libqsqlite.so,导致符号不匹配。


问题原因

  1. Qt 插件加载顺序问题
    即使指定了 QT_PLUGIN_PATH,程序可能仍然优先使用系统默认的插件路径 /usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers/libqsqlite.so
  2. libsqlite3.so 版本冲突
    /opt/deepin-shared-libs/Qt5.15.10gles 和系统的 /usr/lib/x86_64-linux-gnu 中可能存在不同版本的 libsqlite3.so,导致符号不匹配。

解决方法

1. 确保正确加载 /opt/deepin-shared-libs 的插件

强制让程序只加载 /opt/deepin-shared-libs/Qt5.15.10gles/plugins/sqldrivers/libqsqlite.so,可以通过以下方式实现:

  1. 备份系统插件路径的 libqsqlite.so:(应该移到别处目录下我实际测试他还是会调用备份文件)

    sudo mv /usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers/libqsqlite.so /usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers/libqsqlite.so.bak
  2. 创建软链接指向 /opt/deepin-shared-libs 的插件:

    sudo ln -s /opt/deepin-shared-libs/Qt5.15.10gles/plugins/sqldrivers/libqsqlite.so /usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers/libqsqlite.so
  3. 重新运行程序:

    sudo /usr/bin/deepin-home-appstore-daemon

2. 检查加载的动态库路径

使用 LD_DEBUG=libs 检查程序实际加载了哪些动态库,特别是 libqsqlite.solibsqlite3.so

LD_DEBUG=libs sudo /usr/bin/deepin-home-appstore-daemon 2>&1 | grep libsqlite
  • 如果仍然加载了错误的 libqsqlite.solibsqlite3.so,需要通过 LD_PRELOAD 强制加载正确的版本。

3. 使用 LD_PRELOAD 强制加载库

通过 LD_PRELOAD 明确指定 /opt/deepin-shared-libs 下的 libsqlite3.solibqsqlite.so

export QT_PLUGIN_PATH=/opt/deepin-shared-libs/Qt5.15.10gles/plugins
export LD_PRELOAD=/opt/deepin-shared-libs/libsqlite3.so
sudo /usr/bin/deepin-home-appstore-daemon

4. 确保 /opt/deepin-shared-libs 的环境完整

确认 /opt/deepin-shared-libs 中的动态库是完整的,特别是 libsqlite3.so 是否包含 sqlite3_column_table_name16 符号:

nm -D /opt/deepin-shared-libs/libsqlite3.so | grep sqlite3_column_table_name16
  • 如果符号缺失,需要更新 /opt/deepin-shared-libs/libsqlite3.so
  • 如果符号存在但问题仍未解决,可能需要替换 /opt/deepin-shared-libs/Qt5.15.10gles/plugins/sqldrivers/libqsqlite.so

5. 重建动态库缓存

确保系统正确加载动态库,清除并重新生成动态库缓存:

sudo ldconfig

验证修复

完成上述步骤后,重新运行程序:

sudo /usr/bin/deepin-home-appstore-daemon

如果问题仍然存在

提供以下详细信息以继续分析:

  1. LD_DEBUG=libs 的完整输出。
  2. nm -D /opt/deepin-shared-libs/libsqlite3.so | grep sqlite3_column_table_name16 的结果。
  3. 重新运行程序后的具体报错信息。

根据这些信息,我可以进一步协助你解决问题!

无标签
评论区
头像