在cygwin環境下編譯node.js

    看了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裏直接加附件所以請懶惰的同學就直接發郵件要吧,[email protected]。)我是通過看了這篇文章才弄明白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一個成熟穩定的版本。

發佈了67 篇原創文章 · 獲贊 8 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章