fcitx5-rime加载simplehttp.so报undefined symbol: lua_gettop错误
yolo2h opened this issue · comments
Yolo commented
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
一种解决方式是在载入 librime-lua 时,使用全局模式。可看一下 fcitx5-rime 有没有开关可以控制。我的理解是 lua 的生态环境比较分裂,没有标准的动态库名称,有些环境下 lua 代码甚至就直接嵌入到主库/程序中了。所以大部分的 lua module 不会在 so 中硬编码库的名字,而是依赖于在全局空间中查找 symbol。
另一种方式就是在编译时加上 -llua
。但这是在了解某个环境的约定的情况下才能这么做。比如有些 linux 发行版应该用 -llua5.4
之类的。这样的修改不适合反映到本项目内,而是应自行 patch。
Yolo commented
感谢回复,在fcitx5-configtool里没找到相关配置,我fork一份自己改啦。