一直对javascript引擎感兴趣,也看了javascriptcore和spidermonkey,对比而言还是感觉Google_V8更适合入门。我主要的编程环境是在ubuntu下。下面从代码的获取开始学起.在Ubuntu环境下我们一般获取代码的途径有二种:
①获取源代码
1.通过git来下载 :
git clone git://github.com/v8/v8.git v8
如果提示没有git命令,可以通过以下命令来下载
sudo apt-get install git
下一步检查是否是最新版本
cd v8
git pull -rebase origin master
2.通过svn来下载
首先我们先确定下系统中是否有svn命令,如果没有的话我们可以通过
sudo apt-get install subversion
来下载
使用以下命令来获取v8的最新代码
svn checkout http://v8.googlecode.com/svn/trunk/ v8
3.如果我们想看历史版本的v8代码,我们可以通过以下网址来获取
https://code.google.com/p/v8/source/browse
②安装第三方依赖库
进入v8文件夹后输入以下命令
make builddeps
这个是下载编译过程中所需要的第三方库
或者
make dependencies
这个事下载所有的第三方库,推荐用第一个命令
③编译V8代码
一般我们用的是gyp来编译,代码在第三方库中,在GCC编译器中,编译命令如下
编译32位或者64位的代码或者调试模式下或者发布模式下,我们可以使用以下命令来完成,
make 需要编译的位数 (ia32, x64, arm, arm64) .调试或者发布(debug,release)。
比如我们想编译64位下的调试版本的话,命令如下
make x64.debug
在用make编译的时候,我们也可以选择别的参数,比如
如果我们不知道自己的机器是32位还是64位,我们可以选择native来编译,此时可以通过mode=(debug,release)来选择模式。如 make native mode=debug
-j 是选择并行任务个数, 比如 make x64.debug -j8
OUTDIR=foo 表示生成的文件路径,默认是./out/..,如果我们加了这个参数后,生成的文件将存在foo/下
library=shared (component=shared_library)这两个参数的意思是一样的表示生成动态链接库比如我们在调用V8 要使用到的libv8.so库,需要生成这个文件的话要加这个参数。
snapshot=off 表示 禁止编译快照,这样会使得V8的处理速度会减慢,一般建议带上ON
因此我们在编译V8的时候可以使用以下命令:
make native mode =release component_shared_librarysnapshot=on
(如果需要并行编译可以加速-j8)
生成后默认情况下 我们可以在out/native/lib.target下找到生成的共享库文件libv8.so
这里只是简单的说明下编译V8 的过程,其实V8项目的wiki说的更加详细,可以在https://code.google.com/p/v8/wiki/BuildingWithGYP中学习。
FIGHTING sixi