您好,欢迎来到暴趣科技网。
搜索
您的当前位置:首页自己编译lua源码

自己编译lua源码

来源:暴趣科技网
⾃⼰编译lua源码

对于⼀个开源⼯程,开始学习它的第⼀步⾃然是编译⼯程。

使⽤vc编译lua,在⽹上已有许多介绍,但“纸上得来终觉浅”,⾃⼰⾛⼀遍还是有必要的。步骤如下:

1.下载源代码,从lua.org下载最新源代码包lua-5.2.2,解压到本地2.打开vc建⽴⼀个solution,就叫lua.sln

3.创建⼀个名为liblua的project(lua库),添加除lua.c和luac.c以外的所有代码⽂件,将lua库编译为dll(这⾥注意,需要在预处理器中添加LUA_BUILD_AS_DLL和LUA_CORE两个宏)

4.创建⼀个名为lua的project(lua解释器),添加除luac.c以外的所有代码⽂件5.创建⼀个名为luac的project(lua编译器),添加除lua.c以外的所有代码⽂件

6.编译、链接即可。注意lua和luac两个⼯程没有依赖liblua动态库,⽽是直接使⽤的源代码,这是因为luac⾥⽤到的⼀些API缺省情况下是不被liblua导出的,需要改些设置,所以直接⽤源代码省事了。⽣成结果:

  lua库:liblua.dll、liblua.lib  lua解释器:lua.exe:  lua编译器:luac.exe

完成了编译,下⼀步当然是顺便运⾏个Hello World玩玩:1.打开记事本,输⼊如下⼀⾏代码:print(\"Hello World!\")保存成hello.lua

2.启动命令⾏,进⼊lua.exe所在⽬录,运⾏命令⾏:>lua hello.lua

显⽰输出:Hello World!

=========================================================================

与 平台⽆关。Lua⼏乎可以运⾏在所有我们听说过的系统上,如NextStep、OS/2、PlayStation II (Sony)、Mac OS-9、OS X、BeOS、MS-DOS、IBM mainframes、EPOC、PalmOS、MCF5206eLITE Evaluation Board、RISC OS,及所有的Windows和Unix。Lua不是通过使⽤条件编译实现平台⽆关,⽽是完全使⽤ANSI (ISO) C,这意味着只要你有ANSI C编译器你就可以编译并使⽤Lua。

要在C++中使⽤Lua⾮常简单,不管是GCC,VC还是C++Builder, 最简单的⽅法就是把Lua源码中除lua.c,luac.c和print.c以外的所有c⽂件与你的代码⼀起编译链接(或加⼊到⼯程中)即可。

因为Lua是⽤C语⾔写的,除⾮编译lua库时指定编译器强制以C++⽅式编译,否则在C++⼯程中应该这样包含lua头⽂件:extern \"C\" {#include \"lua.h\"#include \"lualib.h\"#include \"lauxlib.h\"}

======================================================================

lua 5.2.3 VS2012编译⽅法

准备:

1. 新建⼀个空解决⽅案

2. 打开解决⽅案⽬录,新建⽂件夹“include”和“src”

3. 复制源码中所有.h⽂件到include⽬录,所有.c⽂件到src⽬录4. 删除src⽬录下的lua.c、luac.c

编译dll:

1. 新建⼀个win32 dll的空项⽬

2. 修改包含⽬录,在其中添加include⽬录3. 把src⽬录下的所有⽂件全部加⼊项⽬

4. 添加define:LUA_BUILD_AS_DLL、_CRT_SECURE_NO_WARNINGS5. 可选:修改属性→C/C++→代码⽣成→运⾏库,为多线程,不依赖VC运⾏库dll6. 可选:新建⼀个资源⽂件,设置dll的版本信息

编译静态库:

1. 新建⼀个win32 静态库的空项⽬

2. 修改包含⽬录,在其中添加include⽬录3. 把src⽬录下的所有⽂件全部加⼊项⽬

4. 添加define:_CRT_SECURE_NO_WARNINGS

lua编译器和lua解释器有什么区别,都是⽤来⼲什么的?

lua编译器把lua脚本编译成lua虚拟机的指令。(bytecode)

lua解释器除了有编译器外还有虚拟机,可以执⾏编译后的指令。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoquwan.com 版权所有 湘ICP备2024080961号-7

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务