参考文章:
1) http://www.oschina.net/question/12_76955
2) http://rudamoura.com/luaonmacosx.html

最近在为iOS开发游戏,我的开发机是iPhone5。在开发的游戏项目中需要使用Lua语言,所以想在我的苹果MacBook Pro 中安装Lua语言的解释器,以便进行脚本调试。
我的Mac OS X的版本是10.8.3。Lua 是一个轻量级的脚本语言,在游戏开发上使用非常多。它是开源的。我们可以下载它的源码进行编译。

到本文编写时间为止(2013年5月9),Lua的最新版是 Lua 5.2.2
Lua源码的下载网址:
http://www.lua.org/download.html

一、Mac OS X中make和gcc命令的安装
在编译Lua前需要做的准备工作。
我将lua-5.2.2.tar.gz下载到苹果电脑中,解压后进行编译时,发现我的Mac OS X 没有mak命令,也没有gcc命令。
检测苹果电脑的Mac OS X中是否有make命令的方法,可在控制台键入命令:which make
如果有该命令,则会返回提示:/usr/bin/make
所以我需要在Mac OS X中安装mak命令和gcc使命令。安装工具包需要从苹果的开发网站下载。
下载方法:
打开Xcode,菜单Xcode --> Open Developer Tool -->More Developer Tools
这时Safari浏览器被运行,并弹出注册对话框,要求输入Apple ID和密码,填写完注册信息然后进入Apple Developer的下载站点,搜索“Unix”,结果会列出命令工具包的下载列表:
Command Line Tools (OS X Mountain Lion)for Xcode - April 2013   (这个版本需要Xcode 4.6.2 和Mac OS X 10.8以上版本)
Command Line Tools (OS X Lion)for Xcode - April 2013                   (这个版本需要Xcode 4.6.2 和 Mac OS X 10.7.4以上版本)
.....
下面还有其它版本,跟据你使用的Mac OS X的版来下载。另外说一下:
 Mac OS X 10.4.x,代号为:Lion 
 Mac OS X 10.8.x,代号为:Mountain Lion

我的Mac OS X是Mountain Lion,所以下载的是Command Line Tools (OS X Mountain Lion)for Xcode - April 2013 版本,文件名为:
xcode462_cltools_10_86938259a.dmg
下载完后双击该文件。过一会儿后,会弹出安装包的窗口,对双击安装包。按提示完成安装。这时make和gcc便有了。
可使用which命令进行检查。

二、编译Lua软件
编译和安装方法的详细说明在readme文件中:lua-5.2.2/doc/readme.html
在编译前最好进行编译测试,在lua-5.2.2目录下,使用命令如下:make test

我的编译和安装方法是:
sudo make macosx install              (sudo在Mac OS X中表示使用超级用户权限)

注意:
Lua的编译和安装说明文档(readme.html)中指出,编译Lua时,需要选择要运行的操作系统,编译并安装的格式如下:
make xxx install     (如果不是超级用户登录,则需要前面加sudo命令)
其中xxx表示目标操作系统的标记,目标操作系统的标记列表如下:
aix    ansi    bsd    freebsd    generic    linux    macosx    mingw    posix    solaris

Lua 将默认安装到 /usr/local/,安装完成后,在该目录下会生成一些重要文件。

/usr/local/ bin:         (可运行程序)
lua    luac          (lua是Lua语言的解释器,luacLua语言的编译器)
/usr/local/ include:     (头文件)
lua.h    luaconf.h    lualib.h    lauxlib.h    lua.hpp
/usr/local/lib:              (库文件)
liblua.a
/usr/local/ man/man1:  (命令手册)
lua.1    luac.1

Lua 解释器完整的路径是 /usr/local/bin/lua,在终端中运行 lua 即可调用解释器。

三、Lua语言解释器的测试
在控制台上输入lua命令:

lua
Lua 5.2.1 Copyright (C) 1994-2012 Lua.org, PUC-Rio
> print ("Hello World!") (进入交互命令状态,在提示符“>”下输入测试代码)
Hello World! (返回的结果)

键入 Control+D 退出交互命令

如果想运行一个lua脚本文件,可以使用下面命:lua    文件名
如:lua  hello.lua

hello.lua文件的代码:
io.write("Hello world, from ",_VERSION,""!\n)

结果:Hello world, from Lua 5.2!

注释:
Lua 是一个小巧的脚本语言。 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
很多应用程序使用LUA作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。这其中包括魔兽世界、博德之门、愤怒的小鸟等。

如何在Mac OS X 中运行Lua (Running Lua on Mac OS X)的更多相关文章

  1. 如何在cmd命令行中运行Java程序

    cmd运行java 有萌新问我怎么用cmd运行Java,他运行报错了,怎么办?如图是他的执行过程: 他说就这一个类,里面包含了main方法怎么会没有加载主类呢. 其实很简单,因为你执行的时候并不能直接 ...

  2. Appium 从 0 到 1 搭建移动 App 功能自动化测试平台 (1):模拟器中运行 iOS 应用

    转载:https://testerhome.com/topics/4960 在上一篇文章中,我对本系列教程的项目背景进行了介绍,并对自动化测试平台的建设进行了规划. 在本文中,我将在已准备就绪的iOS ...

  3. (转载)详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表

    郑重声明:原文转载于http://dengqi.blog.51cto.com/5685776/1223132 向好文章致敬!!! 一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理 ...

  4. 网络传输中的三张表,MAC地址表、ARP缓存表以及路由表

    一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...

  5. 详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dengqi.blog.51cto.com/5685776/1223132 一:M ...

  6. 使用Mac的过程中的一些小操作

    前言:使用Mac的过程中的一些小操作 查看Mac系统是32位还是64位: 方法1: 点击左上角的苹果按钮->关于本机->概览->系统报告->软件->偏好设置面板:右侧有提 ...

  7. [转载]详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表

    [转载]详解网络传输中的三张表,MAC地址表.ARP缓存表以及路由表 虽然学过了计算机网络,但是这部分还是有点乱.正好在网上看到了一篇文章,讲的很透彻,转载过来康康. 本文出自 "邓奇的Bl ...

  8. [lua] mac上如何编译snapshot(检测Lua中的内存泄露)

    最近我们的unity手游频繁闪退,只要进入战斗场景,之后一段时间就会闪退,如果是在unity编辑器中则会报出not enough memory的错误!猜测应该是有内存泄漏: 由于我们使用了tolua, ...

  9. 在Mac OS X中配置Apache + PHP + MySQL

    在Mac OS X中配置Apache + PHP + MySQL Mac OS X 内置Apache 和 PHP,使用起来非常方便.本文以Mac OS X 10.6.3和为例.主要内容包括: 启动Ap ...

随机推荐

  1. MySQL-----一对一

    一对一: 用户表和博客表 用户表(userinfo): 用户id 用户名 1 George 2 root 3 Bruce 4 Catherine 博客表: 博客id 博客名 用户id(FK + 唯一) ...

  2. java中"=="和equals方法究竟有什么区别?

    为什么会说到这个问题呢,是因为在java中遇到这个问题太常见了,无论是在写代码时还是在面试时.下面就一起探讨一下它们之间的联系与区别吧. 首先对于这样的问题,一般是先单独把一个东西说清楚,然后再说另一 ...

  3. 缩小Oracle目录下UNDOTBS01.DBF文件的大小

    缩小Oracle目录下UNDOTBS01.DBF文件的大小 分类: Oracle 使用sys用户登录Oracle 方法一:重置表空间大小 执行ALTER DATABASE DATAFILE 'D:OR ...

  4. 使用JS对form的内容验证失败后阻止提交

    1.form的两个事件 submit,提交表单,如果直接调用该函数,则直接提交表单 onSubmit,提交按钮点击时先触发,然后触发submit事件.如果不加控制的话,默认返回true,因此表单总能提 ...

  5. js在HTML中的三种写法

    1.内联样式 内联样式分为两种,一是直接写入元素的标签内部 <html> <title>js样式内联写法</title> <meta http-equiv=& ...

  6. hihoCoder#1048 状态压缩·二

    原题地址 位运算的状态压缩太操蛋了,很容易出错...又是数组没开够导致诡异现象(明明某个值是1,莫名其妙就变成0了),害我debug一整天!fuck 代码: #include <iostream ...

  7. 选学霸(codevs 3372)

    题目描述 Description 老师想从N名学生中选M人当学霸,但有K对人实力相当,如果实力相当的人中,一部分被选上,另一部分没有,同学们就会抗议.所以老师想请你帮他求出他该选多少学霸,才能既不让同 ...

  8. php框架之自动加载与统一入口

    现在PHP有很多的框架,基本都是以MVC为基础进行设计的.其实很多框架(像thinkphp,zf,symfont等)都有两个特性,自动加载类文件和统一入口.这里就简单实现以上两个特性. 假设PHP使用 ...

  9. javaweb开发页面数字过长显示科学计数法的问题

    1. 检查该字段是否为double类型,如果是,请改成BigDecimal 2.如果是导出excel里面为科学计数法,原页面正常,是因为excel设置的原因,请参考https://jingyan.ba ...

  10. Unix时间戳(Unix timestamp)转换

    http://tool.chinaz.com/Tools/unixtime.aspx 如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)? Java time JavaScr ...