`
JavaSam
  • 浏览: 952186 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

chrome v8 编译实录

 
阅读更多

  chrome V8作为最好的Javascript解释器之一,利用它做基于JS语言的小程序想必很有趣。经过查阅相关资源(详见随笔底部)及通宵尝试,终于编译成功并实现第一个小程序。

    有一点想不通的是,为什么google仅提供源代码,而不提供已编译好的lib、dll文件呢?本人并不喜欢这么复杂繁琐的编译过程。

    本文仅将自己的理解、编译过程和报错问题分享出来,防止网友再走同样的冤枉路,引用文章已在下面列出,有不当地方欢迎高手拍砖。

    目前,在Windows有两种编译方式:

        1. 通过 GYP(Generate Your Project) 生成项目文件(sln)的方式,也是google推荐的方式,这样可通过Visual Studio查看编译不同项目;

        2. 通过 Scons build的方式,个人觉得它更方便,但google称未来将不再使用它。

   

    第一部分:搭建环境

    这里仅分享Windows平台下的环境配置:

        1. Visual Studio IDE。原理上它支持05/08以及2010,但在2010下GYP方式我未成功,可能由于它对项目文件进行转换造成的吧,原因不详,请高手指点。总之建议用VS2008,因为官网给出08下的命令。请大家一定看清是否安装了VS对VC++的支持,最初编译失败就因为本机仅安装对C#的支持造成的。另外要安装SP1包。

        (下面会用到SVN和GIT,未安装的朋友需要装一下:tortoriseSVN  Git

        2. Python环境。最初装3.2,编译过程报错,我想可能由于3.2安装后文件夹为Python32有关,所以最后改为Python 2.7,成功。

            可以通过Python官网下载安装包,也可以通过SVN checkout一份,地址为 svn co http://src.chromium.org/svn/trunk/tools/third_party/python_26@89111 third_party/python_26

            最后在环境变量Path上添加 C:\Python27;C:\Python27\Scripts ,我的目录为C盘。

        3. GYP或Scons。V8官网已经建议安装GYP,并利用其生成的项目文件进行编译,由于我本机环境是Visual Studio 2010,该方式下总是报错缺少文件,所以又安装了Scons,并编译成功。

            关于GYP,V8官网给的SVN命令 svn co http://gyp.googlecode.com/svn/trunk build/gyp 总是checkout不下来,提示URL链接错误,后发现googlecode.com访问不了,本人随后在git上下载了一份 https://github.com/martine/gyp

           关于Scons,本人觉得它确实是编译C/C++项目较好的工具之一,使用方便,地址为 http://www.scons.org/download.php ,但V8官网已经在推荐google自己的GYP,另外编译过程也加了提示。

 

        4. cygwin。必装软件,遇到同上的问题。V8官网提供的SVN命令 svn co http://src.chromium.org/svn/trunk/deps/third_party/cygwin@66844 third_party/cygwin 总是checkout不成功,后在cygwin官网下了一份,发现其国内镜像首选是网易开源镜像站,赞一个!!

        5. 下载V8引擎源代码。本人通过官网提供 GIT 地址 git clone git://github.com/v8/v8.git v8 && cd v8 成功下载。

            现在的源代码都是不提供项目文件sln,如果想用VS打开,就必须用GYP生成。

 

    第二部分:编译过程

        一、若使用GYP,那么首先要使用Python安装,在命令行下转到GYP所在目录,键入命令 python setup.py install  安装,完成后Python会增加scripts目录。

             命令行转到V8所在目录,执行 python build\gyp_v8 ,将会在该目录下生成All.sln项目文件。

             最后使用VS编译源代码,可以使用命令行 "c:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\devenv.com"/build Release build\All.sln ,也可以用IDE打开sln项目文件编译生成。

             郁闷的是,在VS2010下需要进行转换,在命令行下会报如下提示。郁闷许久!!

        二、使用Scons是我最后的选择,感觉也非常方便。

            若未设置环境变量则需要加上 set PATH=C:\Python27;C:\Python27\Scripts;%PATH%

             设置运行VC++2010的环境 "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"

             命令行下转到V8所在目录,调用scons命令进行编译

                     动态模式   scons mode=release library=shared msvcrt=shared env="PATH:%PATH%,LIB:%LIB%,INCLUDE:%INCLUDE%" d8

                                   scons mode=debug library=shared msvcrt=shared env="PATH:%PATH%,LIB:%LIB%,INCLUDE:%INCLUDE%" d8          

                     使用静态模式 library=static 会产生较大lib文件(>200M),而且编译时间长,总出错。。

             等待编译...最后在V8根目录将会看到生成的V8.lib V8.dll等文件(如果中间出错中止,请尝试再次编译,我遇到多次,但再次编译就没问题了)

        注:国外一篇博客中高手直接将所有功能做了打包,下载后执行脚本直接可生成dll文件,亲测正确!地址见 参考文章6。

   

    第三部分:第一个V8程序

    编译成功后,参考官网的Hello World程序,检验一下编译成果。

    1. VS2010下,新建Win32 Console Application,添加对v8.h 和v8.lib的引入。

 

    2. 贴入代码片段

    注意别忘记引入 WSock32.lib、ws2_32.lib、winmm.lib  三个lib,否则会报错滴!!

View Code
 1 #include <v8.h>
 2 #pragma comment(lib,"WSock32.lib")
 3 #pragma comment(lib,"ws2_32.lib")
 4 #pragma comment(lib,"winmm.lib")
 5 using namespace v8;
 6 
 7 int _tmain(int argc, _TCHAR* argv[]){
 8     // Create a stack-allocated handle scope.
 9     HandleScope handle_scope;
10     int m;
11     // Create a new context.
12     Handle<Context> context = Context::New();
13     // Enter the created context for compiling and
14     // running the hello world script.
15     Context::Scope context_scope(context);
16     // Create a string containing the JavaScript source code.
17     Handle<String> source = String::New("'Hello' + ', World!'");
18     // Compile the source code.
19     Handle<Script> script = Script::Compile(source);
20     // Run the script to get the result.
21     Handle<Value> result = script->Run();
22     // Convert the result to an ASCII string and print it.
23     String::AsciiValue ascii(result);
24     printf("%s\n", *ascii);
25     scanf("%d",m);
26 
27     return 0;
28 }

    3. 看到控制台输出 Hello World! 搞定

 

    参考文章:

        1. http://code.google.com/p/v8/wiki/BuildingWithGYP

        2. http://www.cnblogs.com/meteoric_cry/archive/2011/03/14/1983294.html

        3. http://www.cnblogs.com/foxhengxing/archive/2011/07/11/2103430.html

        4. http://funnylog.kr/351

        5. http://blog.stevenreid.co.uk/2011/06/25/build-v8-on-windows-7/

        6. http://blog.carsten.orthbandt.de/?p=132

分享到:
评论

相关推荐

    chrome v8 vs2010编译指导及 helloworld测试工程

    在IT领域,Google V8引擎是一款著名的开源JavaScript虚拟机,被广泛应用于Chrome浏览器以及Node.js等项目中。本文将详细阐述如何使用Visual Studio 2010(VS2010)来编译V8引擎,并创建一个"Hello, World!"测试工程...

    Chrome浏览器v8引擎源代码

    Chrome浏览器的V8引擎是Google开发的一款高性能的JavaScript和WebAssembly虚拟机,它负责解析、编译和执行JavaScript代码。V8引擎以其高效、快速和轻量级的特点,在Web开发领域占据着重要的地位。这份“Chrome浏览器...

    google_chrome浏览器编译过程

    ### Google Chrome 浏览器编译过程详解 #### 一、搭建编译环境 Google Chrome 是一款由 Google 开发的免费开源网页浏览器,基于 Chromium 项目。为了编译 Google Chrome,首先需要准备合适的编译环境。 ##### 1. ...

    google v8引擎编译后的dll及头文件

    V8引擎是Google开发的一款高性能的JavaScript和WebAssembly运行时环境,它被广泛应用于Chrome浏览器以及Node.js等服务器端JavaScript平台。V8引擎以其高效、快速的解释和编译JavaScript代码而闻名,它实现了...

    Chrome V8 Javascript引擎

    Chrome V8 JavaScript引擎是Google开发的一款高性能的JavaScript和WebAssembly执行环境,被广泛应用于Chrome浏览器以及Node.js等服务器端环境。V8引擎以其快速的编译速度和高效的运行时性能而闻名,它将JavaScript...

    chrome_v8_js引擎源码导读分析.pdf

    chrome_v8_js引擎源码导读分析 第一章 v8 之整体流程 第二章 v8 之全局环境配置及初始化 2.1 全局模板 2.2 库函数 2.3 初始化 第三章 v8 之前端建立语法树 3.1 v8 编译中重要的类 3.2 compile之前的查找 ...

    chrome源码下载编译.docx

    ### Chrome Chromium 源码下载与编译指南 #### 一、引言 随着开源项目的日益普及和技术人员对底层技术的探索欲望不断增强,越来越多的人开始尝试深入研究诸如Chrome这类复杂软件的技术实现细节。本文旨在详细介绍...

    goole v8引擎编译集成

    谷歌V8引擎是一款开源的JavaScript运行环境,由Google开发,最初是为Chrome浏览器设计的,但现在已经被广泛应用于其他项目,包括Node.js服务器端环境。V8引擎以其高性能、高效的垃圾回收机制以及对最新JavaScript...

    Chrome-V8.pdf

    本文将基于“Chrome-V8.pdf”文档提供的信息,深入探讨V8的设计理念、关键技术以及其实现细节。 #### V8的关键特性 - **速度与可扩展性**:V8引擎设计之初就旨在提高JavaScript的执行效率,确保其能够应对日益复杂...

    cygwin.rar v8编译库,用于编译v8

    V8是Google开发的一款高性能JavaScript和WebAssembly的开源虚拟机,广泛应用于Chrome浏览器和Node.js服务器端环境。它的设计目标是提供快速、动态类型的解释和编译,以满足现代Web应用的性能需求。V8不仅实现了...

    配套“编译v8引擎”文章使用

    这篇文章将详细讲解如何编译V8引擎,并探讨其在chrome浏览器和node.js中的应用。 一、V8引擎概述 V8引擎的核心目标是快速、高效地执行JavaScript代码。它采用了即时编译(Just-In-Time,JIT)技术,将源代码直接...

    chromeapp编译版本

    chromeapp编译版本

    Chrome V8 Javascript Engine 2011-12-01: Version 3.7.12

    总结来说,Chrome V8 JavaScript Engine 3.7.12版本是一个高性能的JavaScript执行环境,通过即时编译、垃圾收集和对ECMAScript标准的支持,为Web开发提供了强大的动力。它的源代码文件可以为开发者提供深入学习和...

    Google Chrome V8类型混淆漏洞

    Google Chrome V8类型混淆漏洞

    VS2010编译V8 JavaScript引擎库可嵌入C++

    V8 JavaScript引擎是Google开发的一款高性能的开源JavaScript运行环境,被广泛应用于Chrome浏览器以及Node.js等项目中。本文将深入探讨如何使用Visual Studio 2010(VS2010)来编译V8引擎,并将其嵌入到C++项目中。...

    gyp.rar v8库,用预编译v8

    这个"gyp.rar"文件可能包含了使用gyp工具来预编译V8库的相关资源。 在深入理解这个主题之前,我们需要知道几个关键概念: 1. **GYP**: GYP是一个元构建系统,它允许开发者用一种统一的方式来描述项目的构建过程,...

    VS2019谷歌V8引擎8.2版本,编译好的Release版DLL和LIB,和测试demo

    在本资源中,我们关注的是V8引擎的8.2版本,该版本是针对Visual Studio 2019编译的,并提供了Release构建的DLL和LIB文件,以及相关的测试示例。 1. **V8引擎概述**:V8引擎的设计目标是提供快速的JavaScript执行...

    配套“编译v8引擎”文章使用 cygwin

    V8引擎是Google开发的一款高性能JavaScript和WebAssembly的开源虚拟机,主要用于Chrome浏览器以及Node.js后端环境中。本文将详细讲解如何在Windows操作系统上利用Cygwin环境来编译V8引擎。 首先,Cygwin是一款模拟...

    V8脚本引擎编译完的lib(适用于windows)

    V8脚本引擎是Google开发的一款高性能的JavaScript和WebAssembly执行环境,被广泛应用于Chrome浏览器以及Node.js等项目。V8引擎以其高效的即时编译(JIT)技术、优秀的垃圾回收机制以及对最新JavaScript特性的支持而...

    VS2015谷歌V8引擎6.3版本,编译好的Release版DLL和LIB,和测试demo

    V8引擎是谷歌开发的一款高性能的JavaScript和WebAssembly虚拟机,它被广泛应用于Chrome浏览器以及Node.js等服务器端运行环境中。VS2015(Visual Studio 2015)是微软提供的一个强大的集成开发环境,支持多种编程语言...

Global site tag (gtag.js) - Google Analytics