lua安装,与c交互的过程记录
lua安装
在此我的机器环境是cenos 6.8 我安装的是lua5.1.4版本
- 安装lua编译的相关依赖
yum -y install readline-devel ncurses-devel
tar -zxvf lua-5.1.4.tar.gz
cd lua-5.1.4
make linux test
make install
至此lua模块安装完成,开始和c语言的交互之旅行吧
网上很多介绍c和lua交互的,但是在linux下面的编译介绍却没找到,在此自己记录下,也方便大家查看
- 在lua模块安装完成后,可以用命令find / -name ‘lua.h’ 查看lua.h的位置,网上很多人是用–profix指定位置,在此我都是默认安装,发现默认其实已经是在/usr/local/bin 等系统目录下,没有其他配置,可直接使用,很方便。不需要像很多人说的那样多此一举,每次总是百度来百度去反而消磨很多精力。
1实现自己的第一个c调用C的例子
test.lua
print("lua script test.lua have been load--")
function showinfo()
print ("hello world")
end
function lua_add(a,b)
return a+b
end
function lua2c_add(a,b)
return add(a,b)
end
test.c
#include
#include
#include
#include
int main(int argc, char *argv[])
{
lua_State *L = lua_open();
L = luaL_newstate();
luaL_openlibs(L);
luaL_dofile(L, "test.lua");
lua_getglobal(L,"showinfo");
lua_pcall(L,0,0,0);
lua_getglobal(L,"lua_add");
lua_pushinteger(L,1);
lua_pushinteger(L,5);
lua_pcall(L,2,1,0);
printf("lua add function return val is %d
",lua_tointeger(L,-1));
lua_close(L);
return 0;
}
- 编译命令 gcc test.c -o test -llua -lm -ldl
2实现自己的第一个lua调用C的例子
c_lua.c
#include
#include
#include
#include
static int add(lua_State* L)
{
int a = lua_tointeger(L,1);
int b = lua_tointeger(L,2);
lua_pushinteger(L,a+b);
return 1;
}
int main()
{
lua_State *L = luaL_newstate();
luaL_openlibs(L);
lua_register(L,"add",add);
luaL_dofile(L,"test.lua");
lua_getglobal(L,"lua2c_add");
lua_pushinteger(L,3);
lua_pushinteger(L,4);
lua_pcall(L,2,1,0);
int result = lua_tointeger(L,-1);
lua_pop(L,1);
printf("result = %d
",result);
lua_close(L);
return 0;
}
- 编译命令 gcc c_lua.c -o app -llua -lm -ldl
Ok啦,经历好几天的迷雾,终于在linux跑起来了,还不太会写博客,就此小小记录下,也希望能带给一些和我一样有迷惑的朋友帮助