Lua:找不到加载模块文件的错误

时间:2015-12-17 14:25:11

标签: linux lua shared-libraries embedded-linux fastcgi

我正在尝试设置Lighttpd + lua + fastcgi以在嵌入式MIPS板上运行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"

- 也许是需要语法有问题?我不是lua的专家,所以我不知道。

1 个答案:

答案 0 :(得分:2)

好的,我明白了。事实证明,这是一个缺失的依赖,正如@Ctx建议的那样。

readelf -d lfcgi.so | grep NEEDED 

表明它需要 libfcgi.so.0 这是libfcgi.so的符号链接,我只有最后一个,而不是符号链接。 创建符号链接后它现在正在工作(实际上它带来了另一个错误,但它是一个不同的故事:P)。

顺便说一下 - 错误信息确实令人困惑 - 看起来文件lfcgi.so丢失了,而实际上它是导致问题的依赖项之一。