window下用vs 2010编译v8源码详解

来源:互联网 发布:我的凉山兄弟 知乎 编辑:程序博客网 时间:2024/06/06 12:57

       今天为了编译v8,在网上找的资料要不过于粗糙,要不没有对应的编译的源码下载,总之是各种问题,不能正常编译,最后通过查看v8官方编译文档和参考网上的资料成功编译,现把编译过程总结如下,希望对有同样问题的朋友有用。

      由于以前的v8源码中是带有vs工程文件的,但是在最新的源码中已经删除了工程文件,必须自己手动生成。所以个人又把情况分了两种:1、源码中带有vs工程文件。2、源码中没有vs的工程文件。

一、源码中带有vs工程文件的。

1、由于之前的版本中是带有vs工程文件的,下载后直接进入V8\tools\visual_studio目录下,用vs2008打开sln文件,即可成功编译。此编译过程对应的源码路径如下http://files.cnblogs.com/meteoric_cry/V8.7z

二、源码中没有vs工程文件的。

1、安装TortoiseSVN+Subverdion。有的svn中是不带Subverdion的,如果你安装完之后bin目录下游svn.exe则表明安装的是带有Subverdion的版本。带Subverdion的下载路径:SVNDownload。安装完之后把安装路径添加到系统变量即可。

2、下载v8源码。选择你要放置v8源码的文件夹,之后鼠标右键选中checkout选项,弹出如图所示的svn下载对话框,输入v8的源码路径:

http://v8.googlecode.com/svn/trunk
如图所示:


3、下载GYP。启动命令提示符,切换到下载的v8的根目录下,输入svn的checkout命令:

svn co http://gyp.googlecode.com/svn/trunk build/gyp
下载gyp源码,效果如下图:


点击回车等待gyp下载完成。

4、下载python。步骤同3。对应的命令为:

svn co http://src.chromium.org/svn/trunk/tools/third_party/python_26@89111 third_party/python_26
python安装完之后记得要把安装路径添加到系统路径path中。

5、下载cygwin。步骤同3。对应命令为:

svn co http://src.chromium.org/svn/trunk/deps/third_party/cygwin@66844 third_party/cygwin
网上的资料都是说下载的文件已经足够了,可是在编译的时候发生了如下错误提示:

gyp: third_party\icu\icu.gyp not found (cwd: C:\Data\Visual Studio\Projects\V8.NET\Source\V8.NET-Proxy\V8\build\v8-ia32) while loading dependencies of tools\gyp\v8.gyp while loading dependencies of preparser\preparser.gyp while loading dependencies of build\all.gyp while trying to load build\all.gypError running GYP.
经过查找,原来是少下载文件所致,这个原因在官方编译文档:v8官方编译文档中有解释。所以继续下载文件。

6、下载icu46。步骤同3,对应的命令为:

svn co https://src.chromium.org/chrome/trunk/deps/third_party/icu46@214189 third_party/icu
至此,v8所依赖的文件都已齐全,可以进入生成工程文件和编译阶段。

7、生成工程文件all.sln。如果在步骤4中已经把python的目录添加到系统路径中了,此时要重启命令提示符,切换到v8根目录下,执行命令:

python build\gyp_v8
生成工程文件。如果在步骤4中没有把python的目录添加的系统路径中,那么此时要制定python的路径,执行如下命令:
third_party\python_26\python.exe build/gyp_v8
亦可生成工程文件。
8、编译源码,生成静态库。进入build目录下,打开all.sln文件,只有完成编译即可,编译完成后会在目录:build\Debug\lib下生成静态库文件icui18n.lib、icuuc.lib、v8_base.ia32.lib、v8_nosnapshot.ia32.lib、v8_snapshot.lib。
9、到此已经完成v8的编译,可以把inlude文件和lib文件复制到自己的工程中实现自己的应用。
10、祝您编程愉快!  微笑

原创粉丝点击