srlua的Makefile出错,lua.h文件不存在。

我正在尝试使用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: fatal error: lua.h: No such file or directory
compilation terminated.
make: *** [srlua.o] Error 1

我正在运行linux 64位(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: fatal error: lua.h: No such file or directory
compilation terminated.
make: *** [srlua.o] Error 1
点赞
用户68204
用户68204

我怀疑 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 上构建并使用了 srlua,使用的是 Lua 5.1,但是我还没有在 Ubuntu 上尝试过这个,所以我不能太具体。

更新:

从你的 pastebin 里,尝试这个:

# 如果 Lua 全局安装,则通常会使用以下命令行
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 开发包,所以我不确定它被放在哪里。

更新 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。

2013-11-19 19:14:24