如何编译使用Lua 5.1的C API的代码?

时间:2018-10-05 23:58:45

标签: c gcc lua lua-api lua-5.1

我有#include来自Lua来源的lua.hlapi.hlualib.hlauxlib.h文件的代码。现在,我必须实际编译该代码。

我的第一个想法是将所有.c文件都包含在Lua的源代码中,或者只是弄清楚我实际上需要哪些.c文件,但是有没有更好甚至更好的文件?正确的方法来编译使用Lua 5.1的C API的代码?

我应该补充一点,我是一个完整的编译开始,我几乎一无所知。我知道什么是GCC以及如何从命令行运行它,仅此而已。


更具体地说,我知道我使用GCC的编译命令将如下所示:

gcc code.c

现在,我需要在Lua源文件中添加每个文件作为这样的参数吗?

gcc code.c lapi.c lauxlib.c lbaselib.c lcode.c …

或者有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

使用Lua API的代码只是一些恰好使用Lua库的C程序。在我的Linux / Debian系统上,供开发人员使用的Lua库是由 liblua5.3-dev Debian软件包。该软件包还包含pkg-config

的文件

因此,您照常编写C程序。可能会使用一些build automation工具。在我的Debian系统上,可以是makeninja等。选择正确的构建自动化工具是您的选择,也是您的责任。

然后,您将构建自动化工具配置为将相关的预处理器标志传递给C编译器,并在链接时传递相关的链接标志。

在我的Linux系统上,我会选择使用make(当然是use the GCC compiler)进行构建,并且我将编辑Makefile(请参见this示例)以包含内容喜欢:

CC= gcc
CFLAGS= -g $(shell pkg-config --cflags lua5.3) -Wall -Wextra
LDFLAGS+= $(shell pkg-config --libes lua5.3)
  

我确实知道GCC是什么以及如何从命令行运行它,

您需要确保了解如何实际使用gcc来编译由几个 translation units组成的程序并使用一些外部库。您还需要了解为什么构建自动化工具如此有用。根据您的背景,您可能需要花几个星期来阅读更多有关此内容的信息。

我的建议:找到一个小型free software程序(例如,在github上)并研究应如何构建(因此,请充分了解其构建过程)。您会学到很多。调查类似luakit

的事物