hchunhui / librime-cloud

72 stars 12 forks source link

fcitx5-rime加载simplehttp.so报undefined symbol: lua_gettop错误 #10

Closed yolo2h closed 6 months ago

yolo2h commented 6 months ago

ldd out-linux/simplehttp.so发现没有链接lua

> ldd out-linux/simplehttp.so
    linux-vdso.so.1 (0x00007fff5b7b1000)
    libc.so.6 => /usr/lib/libc.so.6 (0x000077df59167000)
    /usr/lib64/ld-linux-x86-64.so.2 (0x000077df5937d000)

fcitx5-rime使用的是arch官方仓库的。在lib/Makefile中的simplehttp.so后面加上-llua后看着加载正常了。

hchunhui commented 6 months ago

类似 https://github.com/hchunhui/librime-lua/issues/313

一种解决方式是在载入 librime-lua 时,使用全局模式。可看一下 fcitx5-rime 有没有开关可以控制。我的理解是 lua 的生态环境比较分裂,没有标准的动态库名称,有些环境下 lua 代码甚至就直接嵌入到主库/程序中了。所以大部分的 lua module 不会在 so 中硬编码库的名字,而是依赖于在全局空间中查找 symbol。

另一种方式就是在编译时加上 -llua。但这是在了解某个环境的约定的情况下才能这么做。比如有些 linux 发行版应该用 -llua5.4 之类的。这样的修改不适合反映到本项目内,而是应自行 patch。

yolo2h commented 6 months ago

感谢回复,在fcitx5-configtool里没找到相关配置,我fork一份自己改啦。