【问题标题】:srlua makefile error lua.h No such file or directory [closed]srlua makefile错误lua.h没有这样的文件或目录[关闭]
【发布时间】:2013-12-03 11:30:25
【问题描述】:

我正在尝试使用 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:没有这样的文件或目录 编译终止。 制作:*** [srlua.o] 错误 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:致命错误:lua.h:没有这样的文件或目录 编译终止。 制作:*** [srlua.o] 错误 1

【问题讨论】:

  • 欢迎来到 SO。我编辑了一些基本格式,以使问题更清晰、更易于阅读。
  • 您没有使用最新版本的 srlua for Lua 5.1。见tecgraf.puc-rio.br/~lhf/ftp/lua/#srlua
  • 我修复了感谢您指出。但是还是不行。

标签: linux compiler-errors lua makefile


【解决方案1】:

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

您也可能安装了 Lua 可执行包,但没有安装开发者包。如果是这样,您将需要找到并安装该软件包。类似的命令

$ apt-get 安装 liblua5.1-0-dev

为 Lua 5.1 做到这一点。

如果您是从源代码构建 Lua 5.2,那么您拥有所需的所有文件,您只需告诉 srlua 的 makefile 在哪里可以找到它们。

我已经在带有 Lua 5.1 的 Windows 上成功构建和使用了 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 开发包,所以我不确定它放在哪里。

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

【讨论】:

  • 对我来说,我能用 lua 找到的唯一文件是 /usr/include/lua5.1/,它有 lauxlib.h lua.h luaconf.h lualib.h lua.hpp
  • 所以,安排 makefile 说 -I/usr/include/lua5.1 然后再试一次。您可能需要进行类似的练习,在 -L 选项中查找要命名的正确文件夹,以便 -llua 可以用于链接。
  • 这是我的 makefile pastebin.com/MgGDSujq 这给了我和以前一样的错误。对不起,我是 linux 和所有爵士乐的新手。
  • 糟糕,对此感到抱歉。我在 /usr/lib/x86_64-linux-gnu 找到了 liblua.a 的位置。所以我把它放在它说 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
  • 这种情况至少有5年了。为什么 lua 不能以 GCC 找到的方式安装?我认为 LibBullet 是一样的。
猜你喜欢
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
  • 2012-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多