看了csdn首页的《不再限于页面脚本JavaScript挺入服务器端开发语言序列》这篇文章觉得很有意思。就顺手把node.js下载下来玩一下。怎奈长期在.net平台的“精心”喂养下动手能力已丧失殆尽根本玩不转linux,所以只好用cygwin(公司网络不通畅还没有来得及试验MinGW应该会简单些)这种模拟环境来试验。花费了好几个小时终于能跑起来,赶紧记下心得帮助有好奇心的童鞋也一起来尝试下。
1.在cygwin(1.7x版本的支持ipv6,1.5x还需要额外打补丁)网上下载最新的setup.exe,然后在线安装cygwin,我经过反复的安装尝试才把必要的组件都装齐了。主要是gnu的c,c++编译器以及涉及到的gnulib,pkg-config,make,python,git。大概是这么多反正你编译node.js的时候如果缺什么就再装好了。
2.进入cygwin的shell,然后输入git clone git://github.com/ry/node.git获取最新版本。
3.你如果这时候在node目录下执行./configure一定会失败的(不信自己去试)有一篇老外写的文章很好的解决了问题。当然你可以直接下他编译好的二进制文件,但是我还是喜欢自己动手以后版本更新了也好能重新编译。按照他文章了写的在/usr/include/pthread.h中加入一个函数声明:int pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void));然后执行./configure总是报一个找不到“execinfo”的文件经过测试没有它也没关系。在google里查到的信息是是gunlib里的一个头文件但是不支持cygwin,mingw和windows(应该没记错)
4.把那篇文章里的patch压缩包下载下来。因为我不太了解linux下patch的用法查了很多文章也无法使用,并且通过看代码发现他里面的diff也和最新的版本有一些出入,所以我用了一个最笨的办法人肉patch。大概花了半个多小时把需要修改的文件一个个的都修改好了。(一直不知道怎么在csdn的blog里直接加附件所以请懒惰的同学就直接发邮件要吧,fuadam1982@gmail.com。)我是通过看了这篇文章才弄明白patch文件的机理然后手动修改的。推荐linux小白们读一下。
5.这时候可以安心执行./configure了,虽然还是会报一些错误不过没关系,然后make在最后也报了一个错继续无视它。最后做make install我在这里报了一个python的错jsmin中没有JavaScriptMinifier属性的错(node/deps/v8/tools/js2c.py 285行)弄了好白天才发现我在python下已经装了一个同名的jsmin包导致的,而这个文件要用v8自带的jsmin。所以把python下的jsmin删除掉就ok了。
简单看了下文档还是很好理解的,因为javascript就是单线程的所以比python这种用yield实现trampoline模式要容易理解。而且相关的库也已经有不少了(竟然有djangode这样的玩意)。希望node.js能早日release一个成熟稳定的版本。