我有#include
来自Lua来源的lua.h
,lapi.h
,lualib.h
和lauxlib.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 …
或者有更好的方法吗?
答案 0 :(得分:2)
使用Lua API的代码只是一些恰好使用Lua库的C程序。在我的Linux / Debian系统上,供开发人员使用的Lua库是由
liblua5.3-dev
Debian软件包。该软件包还包含pkg-config
因此,您照常编写C程序。可能会使用一些build automation工具。在我的Debian系统上,可以是make
,ninja
等。选择正确的构建自动化工具是您的选择,也是您的责任。
然后,您将构建自动化工具配置为将相关的预处理器标志传递给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
的事物