pirosikick's diary

君のハートにunshift

Google v8 インストール (for CentOS5.5)

流行りのNode.jsを試したくなったので、まずさくらVPSのCent OS5.5にGoogle v8を入れてみようと思います。

事前準備

ここを見る限り以下が必要なようです。

Subversion,Pythonはわかりますが、SConsってなんだろ?

SConstはオープンソースのソフトウェアビルドツール。

SCons - Wikipedia

なるほど。v8はSConsでビルドするようです。

Subversionインストール && Pythonインストール

yumでインストールできます。

$ yum -y install subversion
$ yum -y install python

バージョン確認。

$ svn --version
svn, バージョン 1.4.2 (r22196)
   コンパイル日時: Aug 10 2009, 17:54:46

$ python -V
Python 2.4.3

うん、大丈夫そうですね。

2011/02/24追記
サーバを立てなおして再インストールしていたら下記のようなエラーが発生しました。

$ sudo scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o obj/release/accessors.o -c -Wall -Werror -W -Wno-unused-parameter -Wnon-virtual-dtor -pedantic -m32 -O3 -fomit-frame-pointer -fdata-sections -ffunction-sections -ansi -fno-rtti -fno-exceptions -fvisibility=hidden -Wall -Werror -W -Wno-unused-parameter -Wnon-virtual-dtor -pedantic -m32 -O3 -fomit-frame-pointer -fdata-sections -ffunction-sections -ansi -DV8_TARGET_ARCH_IA32 -DENABLE_VMSTATE_TRACKING -DENABLE_LOGGING_AND_PROFILING -DENABLE_DEBUGGER_SUPPORT -Isrc src/accessors.cc
In file included from /usr/include/features.h:352,
                 from /usr/include/stdio.h:28,
                 from src/../include/v8stdint.h:33,
                 from src/../include/v8.h:41,
                 from src/v8.h:55,
                 from src/accessors.cc:28:
/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory
scons: *** [obj/release/accessors.o] Error 1
scons: building terminated because of errors.

glibc-develを入れないとエラーが発生するようです。

$ sudo yum -y install glibc-devel
SConsインストール

yumでは入れれないようです。

$ sudo yum -y install scons
[sudo] password for AnaiMB: 
Loaded plugins: downloadonly, fastestmirror
Loading mirror speeds from cached hostfile
 * addons: rsync.atworks.co.jp
 * base: rsync.atworks.co.jp
 * extras: rsync.atworks.co.jp
 * updates: rsync.atworks.co.jp
Setting up Install Process
No package scons available.
Nothing to do

rpmでインストールします。こちらからrpmのファイルを落とします。今回は1.0.0をインストール。

$ cd /usr/local/src
$ sudo wget http://sourceforge.net/projects/scons/files/scons/1.0.0/scons-1.0.0-1.noarch.rpm/download
$ ls -l scons-1.0.0-1.noarch.rpm 
-rw-r--r-- 1 root 901K  8月 13  2008 scons-1.0.0-1.noarch.rpm
$ sudo rpm -Uvh scons-1.0.0-1.noarch.rpm 
準備中...                ########################################### [100%]
   1:scons                  ########################################### [100%]

インストールできました。バージョンを確認します。

$ scons --version
SCons by Steven Knight et al.:
        script: v1.0.0.r3266, 2008/08/12 07:31:01, by knight on bangkok
        engine: v1.0.0.r3266, 2008/08/12 07:31:01, by knight on bangkok
Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 The SCons Foundation

OKです!

v8インストール

さっそくv8のインストールにとりかかります。

ソースコードのダウンロード

Google Codeからv8のソースコードをSubversionでチェックアウトします。

$ cd /usr/local/src
$ sudo svn checkout http://v8.googlecode.com/svn/trunk/ v8-read-only
・・・
A    v8-read-only/benchmarks/README.txt
A    v8-read-only/benchmarks/crypto.js
A    v8-read-only/benchmarks/deltablue.js
A    v8-read-only/benchmarks/v8-logo.png
 U   v8-read-only
リビジョン 5867 をチェックアウトしました。

できました。

ビルド

簡単らしいです。今チェックアウトしたディレクトリに入って、「scons」と入力するだけで良いらしいです。ほんとかよ。笑

$ cd v8-read-only
$ sudo scons

・・・

scons: *** [obj/release/parser.o] Error 1
scons: building terminated because of errors.

うわ、エラーでた。ググってみると同じようなエラーを発見。このリビジョンのdiffのとおりにファイルを「src/preparser.h」を編集すれば良いのかな?

$ cd v8-read-only
$ sudo vim src/preparser.h

# 723行目
- return NULL;
+ return kUnknownStatement;

# 1009行目
- Expression result = NULL;
+ Expression result = kUnknownExpression;

もう1度sconsを実行。

$ cd v8-read-only
$ sudo scons

・・・

scons: done building targets.

よし!入った!!

サンプルを動かす

$ cd v8-read-only
$ sudo scons sample=shell
$ ls -l shell
-rwxr-xr-x 1 root 3.1M 11月 23 00:16 shell*
$ ./shell
> var a = 'This is sample of v8!';
> print(a);
This is sample of v8!

javascriptが動きました。やほほい。

まとめ

  • インストールは意外と簡単でした。
  • けどなにがなんだかまだわからないです。

[asin:6133180196:detail]