手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2011年10月11日的文章

在 Mac OS X 上安装 32bit Lua + LuaSocket

妖怪的文章,用作参考:http://dualface.qeeplay.com/index.php/archives/1415
原文如下:

由于 OS X 是 64bit 操作系统,所以默认情况下编译出来的 Lua 是 64bit 的。一般应用不会有任何问题,但使用 luac 编译源代码后得到的字节码就只能在 64bit 操作系统中使用。

我使用 Lua 的主要目的是在 iOS/Android 环境中简化游戏开发,因此必须在 OS X 中编译出 32bit 的 Lua 及相关库。

下载 lua 5.1.4 源代码和 5.1.4-3 patch:

XML/HTML代码
  1. $ wget http://www.lua.org/ftp/lua-5.1.4.tar.gz  
  2. $ tar zxf lua-5.1.4.tar.gz  
  3. $ wget -O lua-5.1.4-3.patch http://www.lua.org/ftp/patch-lua-5.1.4-3  
  4. $ cd lua-5.1.4/src  
  5. $ patch < ../../lua-5.1.4-3.patch  

编辑 lua-5.1.4/src/Makefile,将:

XML/HTML代码
  1. macosx:  
  2.         $(MAKE) all MYCFLAGS=-DLUA_USE_LINUX MYLIBS="-lreadline"  

改为:

XML/HTML代码
  1. macosx:  
  2.         $(MAKE) all MYCFLAGS="-DLUA_USE_LINUX -arch i386" MYLIBS="-lreadline -arch i386"  

最后:

XML/HTML代码
  1. $ cd lua-5.1.4  
  2. $ make macosx  
  3. $ sudo make install  
然后,就安装到/usr/local/ 下面了。
这是执行make install后显示在屏幕上的,先记录下来,以后可以做参考【膘叔】
  1. cd src && mkdir -p /usr/local/bin /usr/local/include /usr/local/lib /usr/local/man/man1 /usr/local/share/lua/5.1 /usr/local/lib/lua/5.1  
  2. cd src && install -p -m 0755 lua luac /usr/local/bin  
  3. cd src && install -p -m 0644 lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp /usr/local/include  
  4. cd src && install -p -m 0644 liblua.a /usr/local/lib  
  5. cd doc && install -p -m 0644 lua.1 luac.1 /usr/local/man/man1  

 

 

下载 LuaSocket 2.0.2:

XML/HTML代码
  1. $ wget http://files.luaforge.net/releases/luasocket/luasocket/\  
  2. luasocket-2.0.2/luasocket-2.0.2.tar.gz  
  3. $ tar zxf luasocket-2.0.2.tar.gz  
  4. $ cd luasocket-2.0.2  

打开 config 文件,修改为(使用 Mac OS X 的设定,并指定 32bit 架构):

XML/HTML代码
  1. LUAINC=-I/usr/local/include/lua5.1  
  2.   
  3. #------  
  4. # Compiler and linker settings  
  5. # for Mac OS X  
  6. #  
  7. CC=gcc  
  8. DEF= -DLUASOCKET_DEBUG -DUNIX_HAS_SUN_LEN  
  9. CFLAGS= $(LUAINC) -I$(COMPAT) $(DEF) -pedantic -Wall -O2 -fno-common -arch i386  
  10. LDFLAGS=-bundle -undefined dynamic_lookup -arch i386  
  11. LD=export MACOSX_DEPLOYMENT_TARGET="10.7"; gcc  
  12.   
  13. #------  
  14. # Compiler and linker settings  
  15. # for Linux  
  16. #CC=gcc  
  17. #DEF=-DLUASOCKET_DEBUG  
  18. #CFLAGS= $(LUAINC) $(DEF) -pedantic -Wall -O2 -fpic  
  19. #LDFLAGS=-O -shared -fpic  
  20. #LD=gcc  

最后编译安装即可:

XML/HTML代码
  1. $ make  
  2. $ sudo make install  
-----EOF--

如果你不是特别需要安装32位的lua,那么妖怪那段增加 -arch i386这一段的内容就可以不需要改动了。嗯。就是这样简单。

但真的这样吗?NND,事实上我在按照上面操作的时候,告诉我wget这个函数不存在,我晶啊,wget居然不是标配。

最后只能用curl解决了这个问题,把wget http://xxxx.xxx/xxx.xxx.gz 改为:curl http://xxx.xxx/xxx.gz -O xxx.gz,OK,就完成了。。

然后利用这样的操作也下载了一份wget,搞定。还是wget更方便,因为它很简单。。。

 

 

 

Tags: lua

来自雪候鸟的关于JSON一些提示

风雪之隅的博客现在也越来越被很多人知道了,当然这与他加入了php的开发组也有关系。这不,开始内爆了。

前两天我在纠正关于json_decode的问题时,看了一下在线手册,才发现json_decode有了第四个可选参数,把BIG_INT当成STRING来处理。
当然看json_decode的时候里面的参数介绍的不多。这不,昨天雪候鸟更新了N多博客,里面就介绍了两篇与JSON相关的东西:

1、让Json更懂中文(JSON_UNESCAPED_UNICODE)
2、JsonSerializable接口

其中第1篇就是我说的BIG_INT相关的那些附加参数,他这么说了:

XML/HTML代码
  1. 怎么样, 是不是让大家很开心的改动? 呵呵, 当然, Json在5.4还加入了: JSON_BIGINT_AS_STRING, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES等选项, 如果有兴趣, 大家可以参看: json_encode 

所以,比如让中文输出的时候不要变成\uxxxx这种格式就只需要这样:

PHP代码
  1. <?php  
  2. echo json_encode("中文", JSON_UNESCAPED_UNICODE);  
  3. //"中文"  ,如果没加这个参数,以前输出是:"\u4e2d\u6587"

然后JSONSerialize,则是有点象serialize了,但是只针对数据输出,而不是象serialize可以把整个对象序列化。。有点象这样:

PHP代码
  1. <?php  
  2. class JsonTest implements JsonSerializable {  //看一下这里
  3.     private $a$b;  
  4.   
  5.     public function __construct($a$b) {  
  6.         $this->a = $a;  
  7.         $this->b = $b;  
  8.     }  
  9.   
  10.     public function jsonSerialize() {  //也就是说这里要主动实现
  11.         return $this->a + $this->b;  
  12.     }  
  13. }  
  14.   
  15. echo json_encode(new JsonTest(23, 42));  
  16. ?>  
  17.   
  18. //65  

在使用的时候就可以这样:

PHP代码
  1. <?php  
  2. $data = array(  
  3.     new stdClass();  
  4.     new JsonTest(1,2),  
  5.     new JsonTest(3,4),  
  6.     array(5,6)  
  7. );  
  8. echo json_encode($data);  
  9. ?>  
  10.   
  11. //[{},3,7,[5,6]]  

雪候鸟也说了:最后提醒一下, PHP 5.4还处于开发阶段, 在最终release之前, 这些特性都可能被调整或者更改. 如果大家有任何建议, 也欢迎反馈, 帮助我们使得PHP变得更好.

------
好吧,第一个功能我喜欢,第二个我短时间内还用不到。。。

Tags: 雪候鸟, json