Google V8のビルドとV8サンプルのhello_world.cppをコンパイルしてみた。

yos0040 054 m Google V8のビルドとV8サンプルのhello world.cppをコンパイルしてみた。

JavaSCriptEnginのGoogle、V8をご存知でしょうか。

使ってみたくなったので以下の環境でV8のビルドを行ってみたまとめです。

OS CentOS 7
V8 ver 4.8

1.参考にしたサイト

まずは参考にしたサイトです。
以下のサイトを参考にしました。

http://se-suganuma.blogspot.jp/2015/06/centos6v8.html
上記の流れです。

https://developers.google.com/v8/get_started#run-the-example
ビルドに関しては結局大本のサイトを参考にしました。

https://github.com/v8/v8/wiki/Embedder’s%20Guide
helloworld以降はこれを見て色々とやっていく形

http://javascript.g.hatena.ne.jp/edvakf/20100407/1270626241
やはり日本語で訳しているところがあるとありがたいですね。

上記のサイトを参考にしてます。

2.環境整備

CentOS7で作りました。
デフォルトで入るような形でした。

開発環境及びdepot_toolsを入れる必要があります。
depot_toolはパスを設定すれば使えるようになります。
再起動後も使いたい場合には別途設定をする必要があります。


mkdir /opt
cd /opt
mkdir software

yum groupinstall "Development Tools"
cd /opt/software/
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=`pwd`/depot_tools:"$PATH"

fetch v8
cd v8/

git checkout4.8
gclient sync

make x64.release

上記でソースを落としてくるところからビルドまで完了です。
ビルドに関して特に難しい所はありませんでした。

3.Hello_world.ccのコンパイル

次にhello_World.cc作成とコンパイルです。
/opt/v8_buildを作ってそこでコンパイルする形にします。


cd /opt
mkdir v8_build
cd v8_build

cp /opt/software/v8/sample/hello_world.cpp /opt/v8_build
※サンプルファイルは先ほどビルドしたところにあります。

cp /opt/software/v8/out/x64.release/*.bin .
cp -R /opt/software/v8/out .
cp -R /opt/software/v8/include .
※上記includeファイルの中にあるlibplatformの中身libplatform.hをinclude直下に移動しました。
mv /opt/v8_build/include/libplatform/libplatform.h /opt/v8_build/include/

vi hello_world.cc
※以下を変更しました。
#include "include/libplatform/libplatform.h"
↓
#include "include/libplatform.h"

g++ -I. hello_world.cc -o hello_world -Wl,--start-group out/x64.release/obj.target/{tools/gyp/libv8_{base,libbase,external_snapshot,libplatform},third_party/icu/libicu{uc,i18n,data}}.a -Wl,--end-group -lrt -ldl -pthread -std=c++0x

./hello_world

上記のような流れでhello_world.ccのコンパイル、実行ができるかと思います。

他にもサンプルがあるので興味があればそちらもやってみてください。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">