【发布时间】:2021-09-17 02:15:52
【问题描述】:
我正在尝试针对liblluajit-5.1 编译和链接以下C 程序(我在Linux 上安装了LuaJIT 版本2.0.5):
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
int main(int argc, char **argv)
{
int status;
lua_State *L = luaL_newstate();
luaL_openlibs(L);
lua_getglobal(L, "require");
lua_pushliteral(L, "mod");
lua_pcall(L, 1, 0, 0);
// ...
return 0;
}
由于未定义对 lua_getglobal 和 lua_pcallk 的引用,此操作失败。为什么? LuaJIT 是否只实现了 C API 的一个子集,并且我必须另外链接到 liblua?
我正在编译和链接:
gcc -Wl,-E -o prog prog.c -lluajit-5.1 -lm -ldl
【问题讨论】:
-
可能无法在路径中找到该库。在运行
gcc之前尝试export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/lluajit-5.1。 -
@kiner_shah: GCC 肯定找到了 luajit,就在
/usr/lib下。 -
你的系统路径中有
/usr/lib吗?您如何检查 GCC 是否找到了该库? -
另外,您的包含路径是否也在系统路径中?如果是,那么哪些头文件具有这两个功能?此外,您可以使用
strings /usr/lib/<library_name> | grep "lua_getglobal"命令或nm命令检查库中是否存在函数。 -
实际上包含问题,我会发布答案。