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

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 允许我“require”从其他目录加载的lua文件,但是 LUA_CPATH 似乎对加载共享对象没有帮助。

点赞
用户1591957
用户1591957

ffi.load 使用您操作系统的普通 dlopen 机制。

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

一旦设置了 LD_LIBRARY_PATH,Lua 就能够找到该库。

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

相关 FFI 文档

2021-03-04 11:56:37