NativeClient試用

 Thu, 11 Dec 2008 10:39:05 +0800

在iTHome新聞看到:Google推出Native Client測試計劃。想想可以在瀏覽器中執行NativeCode?那就來試試看吧。

首先要下載原始碼,這些從官網就可以找到:nativeclient

建構環境需要一些工具:

  1. 編譯器:用微軟的VisualStudio 2008 Express也可以通,但是我是在Windows SDK的Console環境編譯,詳情上微軟的網站看看吧。
  2. python:建構環境使用scons,所以需要用到python。我用的是python2.5

一些需要的系統設定:

  1. 把python目錄加到path環境變數,這樣才有辦法執行scons.bat
  2. 我不確定是否是必要步驟,但是我另外設了一個環境變數叫做PYTHONHOME,內容還是指向phython目錄
  3. 修改nacl\googleclient\native_client\npapi_plugin\nacl_plugin.rc檔案,把afxres.h改成windows.h,否則會因為Windows SDK缺少這個resource header檔案而出錯。其實一些常數定義透過windows.h就可以了。

接著進入編譯環境:(我已經把檔案解壓縮到D:,package的根目錄是D:nacl)
Native Client安裝

然後進入nativeclient的目錄:
Native Client安裝

接下來執行"scons --mode=opt-win,nacl"開始編譯:
Native Client安裝

編譯完成後,打"scons --prebuilt firefox_install"安裝到firefox:
Native Client

確認firefox目錄沒錯,按下"y"就會開始安裝。如果是用Vista而且打開了UAC,那需要以系統管理員身份打開console才能成功安裝,系統對於"Program Files"有保護,沒有權限的話檔案無法複製。

安裝完畢後,啟動(或重新啟動)Firefox,就可以執行一些測試。
Native Client

可以看到,計算速度大概比javascript快了40倍。

稍微看一下他的HelloWorld測試程式,使用NPAPI要寫一個HelloWorld很麻煩,但是使用NativeClient的SRPC來寫就很簡單,但是兩個速度還是有差距,使用SRPC大概慢了3、4倍。他還支援SDL,所以也可以用SDL寫一些動畫或遊戲了吧?

編譯出來的檔案副檔名叫做"nexe",不過打開來看....似乎是ELF的格式!?
Native Client