您的位置:首页 > 其它

chrome V8 编译实录

2013-08-23 14:18 316 查看


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 Releasebuild\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

    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
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: