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_PATH
和 LUA_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
上打印任何匹配的库来帮助我调试我的情况。
Lua 的 ffi.load("library")
导致 cannot open shared object file: No such file or directory
错误。
作为临时解决方案,我可以提供库的绝对或相对路径。
例如。 ffi.load("./liblibrary.so")
.
我读到 LUA_PATH
和 LUA_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
上打印任何匹配的库来帮助我调试我的情况。