Lua:错误加载模块文件未找到。

我试图在嵌入式MIPS板上设置Lighttpd + lua + fastcgi以运行Web界面。但我认为重要的部分是Lua。 尝试运行/usr/local/bin/wsapi.fcgi(它是lua脚本)时,我会收到以下错误:

/usr/bin/lua: error loading module 'lfcgi' from file '/usr/local/lib/lua/5.1/lfcgi.so':
    File not found
    stack traceback:
    [C]: ?
    [C]: in function 'require'
    /usr/local/share/lua/5.1/wsapi/fastcgi.lua:9: in main chunk
    [C]: in function 'require'
    /usr/local/bin/wsapi.fcgi:9: in main chunk
    [C]: ?

这真的很奇怪,因为ls显示该文件存在,所有权限都可以:

#ls -l /usr/local/lib/lua/5.1/lfcgi.so
-rwxr-xr-x    1 0        0           21152 /usr/local/lib/lua/5.1/lfcgi.so

而更令人沮丧的是,如果我确实删除该文件,lua会显示另一个错误,这意味着第一个错误并非真正由于lua无法正确定位文件而引起的。 所以我有点迷失了,在这里看起来错误消息是误导性的,问题并不是找不到文件,而是什么......

P.S.错误来自文件wsapi / fastcgi.lua,在第9行上,看起来像这样:

local lfcgi = require"lfcgi"
  • 也许是require语法有问题吗?我不是Lua专家,所以无法确定。
点赞
用户3135242
用户3135242

好的,我想出来了。正如 @Ctx 建议的那样,它原来是一个缺失的依赖项。

readelf -d lfcgi.so | grep NEEDED

显示它需要 libfcgi.so.0,它是一个到 libfcgi.so 的符号链接,而我只有后者,没有符号链接。创建符号链接后,它现在正在工作(实际上它会出现另一个错误,但那是另一个故事 :P)。

顺便说一句 - 错误消息真的很令人困惑 - 它看起来像是缺少 lfcgi.so 文件,但实际上是其中一个依赖项引起的问题。

2015-12-17 15:18:28