我尝试按照here给出的基本指南将lua嵌入到C中。我将代码逐字复制到我自己的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已正确安装。还有没有人遇到过这些问题?如果这是一个糟糕的教程,请随时引导我到一个更好的教程。
发布于 2012-07-30 19:30:39
在一些Linux发行版上,您可能需要安装lua-devel
(或类似的命名)包,以便获得编译和链接项目所需的正确的头文件和库符号链接。如果您有一个liblualib-<version>.so.<version>
,例如liblualib-5.so.5.0
,您可能需要安装devel包。
从Lua5.1开始,liblualib
不存在。以下是发布公告:http://lua-users.org/lists/lua-l/2005-05/msg00186.html
发布于 2012-07-30 20:04:08
我在嵌入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一书。不幸的是,它是为Lua5.0编写的。它仍然是最相关的,但我建议您也查看5.1参考手册的相关部分。
https://stackoverflow.com/questions/11728128
复制