AOSC-Dev / liblol

libLoL (LoongArch on LoongArch): Old-world ABI compatibility runtime
33 stars 1 forks source link

搜狗拼音输入法无法正常运行 #9

Open ziqi-cn opened 9 months ago

ziqi-cn commented 9 months ago

系统archlinux,liblol 0.1.3,搜狗拼音输入法4.2.1.145,下载自 https://shurufa.sogou.com/linux

错误日志

1月 25 21:35:31 zhu-loongson3a6000 sogoupinyin-watchdog[4374]: (INFO-4374 addon.c:151) 加载附加组件配置文件: fcitx-sogoupinyinhxm.conf
1月 25 21:35:31 zhu-loongson3a6000 kded5[3065]: Service  "org.kde.StatusNotifierItem-4374-1" unregistered
1月 25 21:35:32 zhu-loongson3a6000 sogoupinyin-watchdog[4374]: (ERROR-4374 module.c:61) 模块: 打开/usr/lib/fcitx/fcitx-sogoupinyinhdm.so 失败 /usr/lib/libc.so.6: version `GLIBC_2.27' not found (required by /usr/lib/fcitx/fcitx-sogoupinyinhdm.so)
1月 25 21:35:32 zhu-loongson3a6000 sogoupinyin-watchdog[4374]: (ERROR-4374 module.c:61) 模块: 打开/usr/lib/fcitx/fcitx-sogoupinyinhxm.so 失败 /usr/lib/libc.so.6: version `GLIBC_2.27' not found (required by /usr/lib/fcitx/fcitx-sogoupinyinhxm.so)
1月 25 21:35:32 zhu-loongson3a6000 sogoupinyin-watchdog[4374]: (ERROR-4374 ime.c:432) fcitx-keyboard-us already exists
1月 25 21:35:32 zhu-loongson3a6000 kded5[3065]: Registering "org.kde.StatusNotifierItem-4374-1/StatusNotifierItem" to system tray
1月 25 21:35:37 zhu-loongson3a6000 sogoupinyin-watchdog[4374]: (ERROR-4374 ime.c:303) 输入法: 打开/usr/lib/fcitx/fcitx-sogoupinyin.so 失败 /usr/lib/librt.so.1: version `GLIBC_2.27' not found (required by /usr/lib/fcitx/fcitx-sogoupinyin.so)
shankerwangmiao commented 9 months ago

该问题原理上无法支持。

应用使用某个输入法,是通过应用程序载入输入法框架的动态连接库,然后后者进一步加载对应输入法的动态连接库实现的。输入法的动态连接库则负责与其后台的进程通信。

综上所述,要想新世界的应用程序使用旧世界的输入法,需要新世界的程序载入旧世界的动态连接库。这一点是不可行的,因为新世界的应用程序使用的是新世界的 glibc,其不包含与旧世界兼容的符号,所以无法加载旧世界的动态连接库。

之所以旧世界的应用程序可以使用新世界的输入法,是因为安装 liblol 后,旧世界的应用程序调用的是 liblol 提供的具有兼容符号的 libc,而后者既可与旧世界的动态连接库相连接,也可以与新世界的动态连接库相连接。

mozbugbox commented 7 months ago

可以提供兼容的输入法框架的动态连接库替换新世界的动态库吗?然后由兼容的输入法框架判断如何载入具体输入法的方式,譬如out-process 运行输入法,通过proxy与兼容输入法框架进行通信。

shankerwangmiao commented 7 months ago

可以提供兼容的输入法框架的动态连接库替换新世界的动态库吗?然后由兼容的输入法框架判断如何载入具体输入法的方式,譬如out-process 运行输入法,通过proxy与兼容输入法框架进行通信。

该功能已经超出了本项目的范畴。如果有任何人有兴趣实现的话,可以作为另一个项目来实现。