在l中嵌入lua代码

时间:2012-07-30 19:19:02

标签: c lua

我试图按照here给出了将lua嵌入到C中的besic指南。我将代码逐字复制到我自己的embed.c文件中并执行了列出的确切编译器命令:

cc -o embed embed.c \
            -I/usr/local/include \
            -L/usr/local/lib \
            -llua -llualib

我收到错误:

embed.c:19:14: error: invalid storage class for function ‘openlualibs’

之后我将函数移到main之外,再次编译,得到:

/usr/bin/ld: cannot find -llualib

我为什么无法编译这个而感到茫然。 lua安装正确。还有其他人遇到过这些问题吗?如果这是一个糟糕的教程,请随意将我指向一个击球手。

2 个答案:

答案 0 :(得分:4)

在某些Linux发行版上,您可能需要安装lua-devel(或类似命名的)软件包,以便获得编译和链接项目所需的正确头文件和库符号链接。如果您有liblualib-<version>.so.<version>,例如liblualib-5.so.5.0,则可能需要安装devel包。

从lua 5.1开始,liblualib不存在。以下是发布公告:http://lua-users.org/lists/lua-l/2005-05/msg00186.html

答案 1 :(得分:1)

嵌入Lua时我遇到了类似的问题。我发现对我有用的是链接动态链接库(dl)和数学库(m)。如果您没有使用第lmath标准库,则可能不需要数学库。

cc -o embed embed.c -I/usr/local/include -L/usr/local/lib -llua -lm -ldl

当然,这假设/ usr / local /是安装Lua文件的地方,这可能是真的。

至于您链接的教程,我认为它可能已经过时了。除了liblualib不再存在外,还有各自的功能可以打开每个标准库。这些是luaopen_ *函数。 Here's the relevant 5.1 reference manual entry.(我假设您使用的是5.1,因为它似乎是软件包中可用的版本)至于更好的教程,我建议Programming in Lua本书。不幸的是,它是为Lua 5.0编写的。它仍然是最相关的,但我建议您查看5.1参考手册的相关部分。