srlua makefile错误:lua.h文件或目录不存在

7

我正在尝试使用srlua将我的lua文件编译成可执行文件,但是我遇到了一个问题。

anthony@anthony-linux:~/Downloads/srlua$ make
gcc -I/tmp/lhf/lua-5.2.0/src -ansi -pedantic -Wall -Wextra -O2    -c -o srlua.o srlua.c
srlua.c:19:17: 致命错误:lua.h:没有那个文件或目录
编译终止。
make: *** [srlua.o] 错误 1

我正在运行64位的Linux(Ubuntu)

编辑:我尝试更改我的makefile设置,但现在我得到这个错误

anthony@anthony-linux:~/Downloads/srlua$ sudo make
gcc -I/usr/local/include -ansi -pedantic -Wall -Wextra -O2    -c -o srlua.o srlua.c
srlua.c:19:17: 致命错误:lua.h:没有那个文件或目录
编译终止。
make: *** [srlua.o] 错误 1

欢迎来到SO。我进行了一些基本的格式化,使问题更清晰、更易于阅读。 - RBerteig
你没有使用适用于Lua 5.1的最新版srlua。请访问http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/#srlua 查看最新版本。 - lhf
1
我修复了,感谢指出。但它仍然无法正常工作。 - Anthony
1个回答

39

我认为使用sudo不会有帮助。问题在于GCC找不到lua.h,这意味着您没有告诉它在哪里找到编译链接到Lua核心的程序所需的开发人员文件。您可能需要确定一个文件夹,例如/usr/local/lua/include

还有可能您已安装了Lua可执行包,但未安装开发人员包。如果是这样,您需要查找并安装该包。像以下命令:

$ apt-get install liblua5.1-0-dev

就可以安装Lua 5.1的开发人员包。

如果您正在从源代码构建Lua 5.2,则已经拥有所需的所有文件,只需要告诉srlua的makefile在哪里找到它们。

我已成功在Windows上使用Lua 5.1构建和使用srlua,但尚未在Ubuntu上尝试过,因此无法更具体。

更新:

从您的pastebin中尝试以下操作:

# these will probably work if Lua has been installed globally
LUA= /usr/include/lua5.1
LUAINC= /usr/include/lua5.1
LUALIB= /usr/lib/lua/5.1
LUABIN= /usr/bin

$(LUAINC)的定义中存在打字错误。 您需要找到liblua.a并在$(LUALIB)的定义中命名正确的文件夹。 我的Ubuntu机器上没有安装lua dev软件包,因此我不确定它放在哪里。

更新2:您越来越接近了,因为您已经通过编译器配置进入链接器配置问题。

在我的Ubuntu机器上,Lua库似乎是/usr/lib/liblua5.1.a,并且没有名为liblua.a的文件。 对于我来说,-llua无法工作。 我能够编译一个最简单的“hello world”...

#include "lua.h"
#include "lauxlib.h"
int main(int argc, char **argv)
{
    lua_State *L = luaL_newstate();
    luaL_openlibs(L);
    luaL_dostring(L, "print('hello, '.._VERSION)");
    return 0;
}

使用以下命令:

$ gcc -I/usr/include/lua5.1 -o hello hello.c -llua5.1 -lm
$ ./hello
hello, Lua 5.1
$

也许你应该先制作一个类似的最小示例来工作,然后再返回调整srlua makefile。


对我来说,我能找到的唯一带有lua的文件是/usr/include/lua5.1/,它包含了lauxlib.h、lua.h、luaconf.h、lualib.h和lua.hpp。 - Anthony
已更新。你有一个拼写错误,这并没有帮助到你。 - RBerteig
1
抱歉,我找到了liblua.a的位置,它在/usr/lib/x86_64-linux-gnu下。所以我将它放在LUALIB所在的位置,现在我得到了这个错误:gcc -o srlua -Wl,-E srlua.o -L/usr/lib/x86_64-linux-gnu -llua -lm -ldl /usr/bin/ld: 找不到-llua collect2: 错误:ld返回1退出状态 make: *** [srlua] 错误1 - Anthony
4
至少已经有5年了,为什么Lua不能以GCC能找到的方式安装呢?我认为LibBullet也是一样的。 - user2023370
1
有人知道如何在MacOS上获取lua.h文件吗? - eri0o
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接