环境是ubuntu9.04
首先去lua官方网站下载lua最新版
解压缩之后,从shell中进入目录,然后执行make
会给个提示,选择make的版本
因为是linux下,就打make linux
然后开始构建了,等下就好,进入src目录,里面有liblua.a
拷贝到项目需要的目录。
同时需要拷贝的是.h我建议把那头文件都拷贝到/usr/include下,这样以后用的时候方便,要不每次还得在gcc中加命令行
在gcc中指定头文件参见:http://blog.chinaunix.net/u/28781/showart.php?id=401631
然后写好代码就可以编译了。我的测试代码是:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1
void
load (
char
*
filename,
int
*
width,
int
*
height) {
2
3 lua_State * L = lua_open();
4
5 luaopen_base(L);
6
7 luaopen_io(L);
8
9 luaopen_string(L);
10
11 luaopen_math(L);
12
13
14
15 if (luaL_loadfile(L, filename) || lua_pcall(L, 0 , 0 , 0 ))
16
17 error(L, " cannot run configuration file: %s " ,
18
19 lua_tostring(L, - 1 ));
20
21
22
23 lua_getglobal(L, " width " );
24
25 lua_getglobal(L, " height " );
26
27 if ( ! lua_isnumber(L, - 2 ))
28
29 error(L, " `width' should be a number\n " );
30
31 if ( ! lua_isnumber(L, - 1 ))
32
33 error(L, " `height' should be a number\n " );
34
35 * width = ( int )lua_tonumber(L, - 2 );
36
37 * height = ( int )lua_tonumber(L, - 1 );
38
39
40
41 lua_close(L);
42
43 }
44
45 int main()
46 {
47 return 0 ;
48 }
2
3 lua_State * L = lua_open();
4
5 luaopen_base(L);
6
7 luaopen_io(L);
8
9 luaopen_string(L);
10
11 luaopen_math(L);
12
13
14
15 if (luaL_loadfile(L, filename) || lua_pcall(L, 0 , 0 , 0 ))
16
17 error(L, " cannot run configuration file: %s " ,
18
19 lua_tostring(L, - 1 ));
20
21
22
23 lua_getglobal(L, " width " );
24
25 lua_getglobal(L, " height " );
26
27 if ( ! lua_isnumber(L, - 2 ))
28
29 error(L, " `width' should be a number\n " );
30
31 if ( ! lua_isnumber(L, - 1 ))
32
33 error(L, " `height' should be a number\n " );
34
35 * width = ( int )lua_tonumber(L, - 2 );
36
37 * height = ( int )lua_tonumber(L, - 1 );
38
39
40
41 lua_close(L);
42
43 }
44
45 int main()
46 {
47 return 0 ;
48 }
编译的命令行是:
gcc test.c -L$HOME/Code/luatest -llua -lm
需要注意,gcc不用在静态库前加lib,得到的是liblua。。我刚开始编译的时候总提示找不到,后来在群里请教了一下大牛,解决了
还有-lm也是必须的,因为lua需要用到libm这个库