Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

7年前关闭。



Improve this question




我正在尝试使用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

我正在运行linux 64bit(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

最佳答案

我怀疑sudo是否会有所帮助。问题在于,GCC无法找到lua.h,这意味着您没有告诉它在哪里可以找到编译与Lua核心链接的程序所需的开发人员文件。您可能需要标识一个文件夹,例如/usr/local/lua/include

也可能已安装Lua可执行软件包,但未安装开发人员软件包。如果是这样,您将需要找到并安装该软件包。像这样的命令

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

does that for Lua 5.1.

If you are building Lua 5.2 from source, then you have all the files you need, you just need to tell srlua's makefile where to find them.

I've successfully built and used srlua on Windows with Lua 5.1, but have not needed to try this on Ubuntu yet, so I can't be a whole lot more specific.

Update:

From your pastebin, try this:

# 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
$ ./您好
你好,Lua 5.1
$

也许您应该做一个类似的最小示例工作,然后返回调整srlua makefile。

09-25 22:27