首页 文章

srlua makefile错误lua.h没有这样的文件或目录[关闭]

提问于
浏览
4

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

1 回答

  • 23

    我怀疑 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上尝试这个,所以我不能更具体 .

    Update:

    从你的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) 的定义中命名正确的文件夹 . 我不知道它放在哪里 .

    Update 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 .

相关问题