Fork me on GitHub

Google V8引擎编译记录

准备工作


1.Python 2.6.x,编译V8必备,官方网站被墙了,不过搜索一下,很多下载,包括天空软件园,华军等都有。

2.Scons,与Make工具类似的编译工具,最新版本是2.1.0,官方网站有下载。本身之前的V8版本是可以不用这个的,在从SVN迁出来的源代码下tools文件夹里有Visual Studio的Project,不过最新的版本取消了,根据官方网站的Build Guide,推荐的是使用Scons来编译V8(其实这个工具很方便的,比Make直观的多,也简单的多)。

3.TortoiseSVN,这个就不说了,相信基本都有安装,官方网站下载。

4.V8Engine源代码,从Google的SVN当中Check Out出来,最新版本地址

 

编译


注意:先安装Python,再安装Scons,安装了Python后,记得设置环境变量,否则无法正常通过编译。Scons也需要设置环境变量,它的目录是Python安装目录下的Scripts。

1.启动CMD控制台,导航到下载的v8源代码根目录,就是有一个SConstruct文件(Scons就是根据它来编译程序的)的目录。

2.编译参数(注意要修改Visual Studio的安装目录):

scons arch=ia32 env="PATH:F:\Program Files\Microsoft Visual Studio 10.0\VC\bin;F:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE;F:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools,INCLUDE:F:\Program Files\Microsoft Visual Studio 10.0\VC\include;C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include,LIB:F:\Program Files\Microsoft Visual Studio 10.0\VC\lib;C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib" libary=shared mode=release msvcrt=shared –j4

3.编译完成后,会在根目录生产v8.lib,v8preparser.lib,在其他程序中使用V8需要用到这两个库文件以及v8的头文件。

 

附:在Javascript.NET中使用V8进行编译

首先还是从官方网站下载最新版本的源代码(v4.0)。

解压后,用VS打开,先移除对老版本V8(v2.6)的引用(直接删除解决方案中的V8项目即可)。

之后,在根目录新建一个Include和Lib文件夹,把V8的头文件放到Include当中,生产的两个lib文件放到Lib当中。

打开项目属性,在配置属性-C/C++-常规中的附加包含目录中,添加自己建立的Include文件夹。

在连接器-输入中的附加依赖项中填入v8.lib,v8preparser.lib的完整路径(可以用宏来填写)。

最后打开JavascriptContext.cpp,在SetParameter和Run(两个重载)三个函数中加入以下代码(进入函数第一行添加):

v8::ResourceConstraints rc;
int limit = (int)&rc - 500000;
rc.set_stack_limit((uint32_t *)(limit));
v8::SetResourceConstraints(&rc);

 

这几行代码主要是防止出现,尝试访问损坏的内存balabalabala的错误。

最后,编译即可。

posted @ 2011-09-11 12:00  sweetwxh  阅读(4879)  评论(10编辑  收藏  举报