1

我有来自 Lua 源代码的文件、、、#includelua.h代码lapi.h。现在我必须实际编译这段代码。lualib.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 …

还是有更好的方法来做到这一点?

4

1 回答 1

2

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

所以你像往常一样编写你的 C 程序。您可能会使用一些构建自动化工具。在我的 Debian 系统上,可能是makeninja还有很多其他的。选择正确的构建自动化工具是您的选择和责任。

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

在我的 Linux 系统上,我会选择使用 构建make,当然使用 GCC 编译器,并且我会编辑我的Makefile(参见示例)以包含以下内容:

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

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

您需要确保知道如何实际使用gcc编译由多个 翻译单元组成的程序并使用一些外部库。您还需要了解为什么构建自动化工具如此有用。根据您的背景,您可能需要花费数周时间阅读更多相关信息。

我的建议:找一些小的免费软件程序(例如在github 上)并研究它应该如何构建(所以学习足够了解它的构建过程)。你会学到很多东西。看看像luakit这样的东西

于 2018-10-06T06:09:19.993 回答