如何在Windows上构建V8而不发疯

如何在Windows上构建V8而不发疯

“打造V8并不是为了胆小” –互联网上的某人

有时我想知道我对JavaScript知识的无限渴望会导致我走向何方。 这次,我决定学习浏览器和Node如何使用V8,以及每天使用的API来自何处。 因此,我着手研究V8和两个最受欢迎的托管环境之间的集成。

我的计划是构建一个嵌入V8的简单应用程序。 而且由于没有多少Web开发人员知道事件循环不是由V8实现的,而是由托管环境实现的,因此我想在我的应用程序中对此进行演示。 我也希望一路了解V8的内部运作方式。

但是首先我必须从源代码构建V8并将其嵌入到简单的HelloWorld应用程序中。 事实证明,这项任务不适合胆小的人。 我花了一个星期的时间来搜索和学习有关C ++和python的许多知识。 我不得不问四个关于stackoverflow的问题。 我将保留它们,这是我建造该产品所需的其余工作。

由于构建和嵌入都不是无关紧要的,因此本文由两部分组成。 第一个展示了如何从Windows计算机上的源代码构建V8。 第二部分介绍了将其插入应用程序所需的条件。 当前V8只能在x64计算机上构建,因此请确保您在Windows x64版本上构建。

请推荐这篇文章??,以便其他人知道有更简单的方法来构建V8。 我真的希望这篇文章可以使一些好奇的人省去很多麻烦。

搭建环境

此处提供了有关如何构建V8的说明,但不幸的是,它们假定您已经具有工作环境,并且省略了许多详细信息。 但是这些细节正是构建V8棘手的原因。

V8使用了Chromium项目工具链的一部分,因此这里找到的一些信息对我也有帮助。 请注意,您无需获取和构建Chromium源即可构建V8。 仅需要一部分工具链,例如depot_tools。

吉特

V8使用GIT作为VCS,因此请下载并安装它。

VS 2015

在Windows上构建V8需要Visual Studio附带的构建工具。 自2016年12月8日起,Chromium需要带有14393 Windows SDK的Visual Studio 2015 Update 3。 因此,继续并在此处下载带有Update 3的Visual Studio Community 2015的安装程序。 此页面需要会员资格,但是它是免费的,因此这里无后顾之忧。 现在运行安装程序,并确保选择以下内容:

如何在Windows上构建V8而不发疯

安装完成后,请检查安装程序是否已将调试接口访问(DIA)SDK和vcvarsall.bat安装到以下目录:

  • … Microsoft Visual Studio 14.0 DIA SDK
  • … Microsoft Visual Studio 14.0 VC vcvarsall.bat

由于某些原因,这些在安装后可能会丢失。 如果是这样,您将必须弄清楚原因以及安装它们的方式。 否则,您将无法构建。 就我而言,它正确地安装在一台机器上而另一台机器上却没有。

Windows SDK

由于Chromium使用的Debugging Tools For Windows并未作为VS安装的一部分安装,因此您还需要单独安装Windows SDK。 在此处下载安装程序并进行安装。 确保已在安装程序中选择了软件包:

如何在Windows上构建V8而不发疯

仓库工具

下载 depot_tools捆绑包并将其解压缩到某处。

警告: 请勿使用资源管理器中的拖放粘贴或复制粘贴粘贴,这不会提取隐藏的“ .git”文件夹,这对于depot_tools自动更新本身是必需的。 但是,您可以从上下文菜单中使用“全部提取…”。

环境变量

将depot_tools添加到PATH的开头。 许多构建python脚本是针对低于3.x的Python版本编写的,因此请确保它在任何Python安装之前都领先。 假设您将软件包解压缩到E: V8 depot_tools更新路径,如下所示:

如何在Windows上构建V8而不发疯

我还建议将其添加到系统变量PATH中,而不是用户变量中。 PATH是从系统路径构造的,可以在“系统”对话框的“系统环境变量”字段中查看。 用户路径被附加到系统路径 这意味着,如果您将路径添加到User变量,并且从系统路径中找到其他Python安装,则会遇到问题。

您还需要指定两个环境变量:

  • DEPOT_TOOLS_WIN_TOOLCHAIN = 0
  • GYP_MSVS_VERSION = 2015
如何在Windows上构建V8而不发疯

更新软件仓库工具

从cmd.exe Shell运行命令gclient(不带参数)。 首次运行时,gclient将安装使用该代码所需的所有Windows特定位,包括msysgit和python。

  • 如果从非cmd外壳程序(例如cygwin,PowerShell)运行gclient,则它似乎可以正常运行,但是msysgit,python和其他工具可能无法正确安装。
  • 如果在首次运行gclient时看到文件系统奇怪的错误,则可能要禁用Windows Indexing 。

运行gclient后,打开命令提示符并在其中键入python,并确认depot_tools python.bat位于python.exe的任何副本之前。

获取源代码

进入要将V8源下载到的目录,并在终端/外壳中执行以下操作:

V8号楼

现在我们已经准备好环境,可以构建V8了。 所有命令都应使用V8源目录中的Windows Command Shell执行。 我们将在构建过程中执行python脚本,并且需要确保使用build_tools中的python可执行文件。 问题是Windows可以将python文件与PC上安装的其他版本的python相关联,因此请始终以以下语法执行命令:

不是这个

通过执行以下操作开始下载所有构建依赖项:

然后通过运行以下命令生成必要的构建文件:

要将V8嵌入到我们的应用程序中,我们需要将其构建为静态库。 为此,我们需要修改默认的构建配置,并将这两个标志添加到args.gn文件中:

运行以下命令以在编辑器中打开文件.. out.gn x64.release args.gn:

添加这些行,使结果文件如下所示:

最后一件事是通过执行以下命令来编译源代码:

运行测试以验证所有内容均正确构建:

建立结果

构建生成带有许多静态库文件 (* .lib)的.. v8source out.gn x64.release obj文件夹:v8_base.lib,v8_libbase.lib等。将v8嵌入到我们的应用程序中时,将使用这些文件。

将V8嵌入到自定义应用程序中

事实证明,斗争并没有以成功的建立而告终。 尝试嵌入V8并构建示例Hello world应用程序时,我也跳过了多个步骤。 该手册非常简短,适用于基于Linux的系统,并且缺少许多重要的细节。

我们将V8嵌入到一个简单的控制台应用程序中。 按照此处 (不要选中Empty project)或此处所述的说明创建应用程序。 这将创建Win32应用程序,但是V8是为x64体系结构构建的,因此我们需要对项目进行一些修改。 为此,请转到项目属性并选择x64活动解决方案平台:

如何在Windows上构建V8而不发疯

另外,默认情况下,V8是在发布模式下构建的。 为了避免这样的失配误差这样 ,我们需要设置该项目,以发布配置:

如何在Windows上构建V8而不发疯

另外,我们需要使应用程序使用运行库的多线程静态版本:

如何在Windows上构建V8而不发疯

配置包含和库目录

接下来,我们需要添加文件夹以查找包含目录的 V8头文件:

如何在Windows上构建V8而不发疯

并将带有V8静态库文件的文件夹添加到库目录

如何在Windows上构建V8而不发疯

该页面很好地总结了所有类型的目录。

撰写HelloWorld cpp文件

现在,从此处将HelloWorld示例复制到您的主cpp文件,并将stdafx作为文件中的头顶包含文件:

链接静态库

我们快完成了。 如前所述,V8本身由.. v8source out.gn x64.release obj目录中的静态库文件组成。 现在我们需要链接这些库。 为此,将以下内容添加到您的代码中:

并链接V8库所需的Windows相关库:

编译应用

现在终于可以开始构建了。 转到Build-> Build solution或按Ctrl + Shift + B。 这将生成一个可执行文件到以下位置:

还有一些

V8需要两个位于… v8-source out.gn x64.release中的文件才能启动:

  • snapshot_blob.bin
  • natives_blob.bin

将它们复制到可执行文件所在的位置。 而已。 现在,您可以从命令行运行可执行文件,它应该输出“ Hello World”。

您发现文章中的信息有帮助吗

如何在Windows上构建V8而不发疯

From: https://hackernoon.com/how-to-build-v8-on-windows-and-not-go-mad-6347c69aacd4

文章知识点与官方知识档案匹配,可进一步学习相关知识Git技能树首页概览2885 人正在系统学习中 相关资源:吉大软件工程学硕考研专业课.zip_吉林大学考研专业课-专业指导…

来源:dfsgwe1231

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年4月13日
下一篇 2017年4月13日

相关推荐