Lua ffi.load 找不到没有绝对路径的库

Lua ffi.load fails to find library without absolute path

Lua 的 ffi.load("library") 导致 cannot open shared object file: No such file or directory 错误。

作为临时解决方案,我可以提供库的绝对或相对路径。 例如。 ffi.load("./liblibrary.so").

我读到 LUA_PATHLUA_CPATH 需要设置。 例如:

export LUA_PATH="$PWD/src/?.lua"
export LUA_CPATH="$PWD/lib/?.so"

设置 LUA_PATH 使我能够“要求”来自其他目录的 lua 文件,但 LUA_CPATH 似乎对加载共享对象没有帮助。

ffi.load 使用操作系统的正常 dlopen 机制。

在 Linux 上,这意味着您需要将库路径添加到 LD_LIBRARY_PATH 变量。

设置 LD_LIBRARY_PATH 后,Lua 可以找到库。

我发现 this answer 通过在 LD_LIBRARY_PATH 上打印任何匹配的库来帮助我调试我的情况。

Relevant FFI documentation