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

我有一些代码 #include了来自 Lua 源码的文件 lua.hlapi.hlualib.hlauxlib.h。现在我需要编译这份代码。

我的第一想法是把 Lua 源码的所有 .c 文件包含进来,或者找出那些我实际需要的 .c 文件,但是有没有更好的甚至是正确的编译使用 Lua 5.1 的 C API 的代码的方法呢?

我应该补充一句,我完全不了解编译,几乎什么也不知道。我知道 GCC 是什么以及如何从命令行上运行它,但仅此而已。


更具体来说,我知道使用 GCC 的编译命令看起来是这样的:

gcc code.c

现在,我是否需要像这样添加 Lua 源码中的每个文件作为参数呢?

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

或者有更好的方法吗?

点赞
用户841108
用户841108

一段使用Lua API的代码只是使用了Lua库的C程序。在我的Linux/Debian系统中,开发人员使用的Lua库是由liblua5.3-dev Debian包提供的。该包还提供了用于pkg-config的文件。

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

然后配置您的构建自动化工具,在编译器阶段传递相关的预处理器标志,在链接阶段传递相关的链接标志。

在我的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-06 06:09:19