笔记本键盘 发疯_如何在Windows上构建V8而不发疯

2024-01-12 08:20

本文主要是介绍笔记本键盘 发疯_如何在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需要Visual Studio 2015 Update 3和14393 Windows SDK。 因此,继续并在此处下载带有Update 3的Visual Studio Community 2015的安装程序。 此页面需要会员资格,但它是免费的,因此这里无后顾之忧。 现在运行安装程序,并确保选择以下内容:

安装完成后,请检查安装程序是否已将调试接口访问(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。 在此处下载安装程序并进行安装。 确保已在安装程序中选择了软件包:

仓库工具

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

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

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

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

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

  • DEPOT_TOOLS_WIN_TOOLCHAIN = 0
  • GYP_MSVS_VERSION = 2015
更新软件仓库工具

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

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

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

获取源代码

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

fetch v8 cd v8

V8号楼

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

python path/to/script params

不是这个

path/to/script params

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

gclient sync

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

python tools/dev/v8gen.py x64.release

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

is_component_build = false v8_static_library = true

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

gn out.gn\x64.release

添加这些行,以便生成的文件如下所示:

is_debug = false target_cpu = “x64” is_component_build = false v8_static_library = true

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

ninja -C out.gn/x64.release

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

tools/run-tests.py --gn

建立结果

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

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

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

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

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

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

配置包含和库目录

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

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

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

撰写HelloWorld cpp文件

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

#include “stdafx.h”
链接静态库

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

#pragma comment(lib, "v8_base.lib") #pragma comment(lib, "v8_libbase") #pragma comment(lib, "v8_external_snapshot") #pragma comment(lib, "v8_libplatform") #pragma comment(lib, "v8_libsampler") #pragma comment(lib, "icuuc.lib") #pragma comment(lib, "icui18n.lib") #pragma comment(lib, "inspector")

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

#pragma comment(lib, "winmm.lib") #pragma comment(lib, "dbghelp.lib") #pragma comment(lib, "shlwapi.lib")
编译应用

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

..\project-folder\x64\Release\project-name.exe
还有一些

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

  • snapshot_blob.bin
  • natives_blob.bin

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

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

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

笔记本键盘 发疯

这篇关于笔记本键盘 发疯_如何在Windows上构建V8而不发疯的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/597287

相关文章

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

基于Python构建一个高效词汇表

《基于Python构建一个高效词汇表》在自然语言处理(NLP)领域,构建高效的词汇表是文本预处理的关键步骤,本文将解析一个使用Python实现的n-gram词频统计工具,感兴趣的可以了解下... 目录一、项目背景与目标1.1 技术需求1.2 核心技术栈二、核心代码解析2.1 数据处理函数2.2 数据处理流程

Python FastMCP构建MCP服务端与客户端的详细步骤

《PythonFastMCP构建MCP服务端与客户端的详细步骤》MCP(Multi-ClientProtocol)是一种用于构建可扩展服务的通信协议框架,本文将使用FastMCP搭建一个支持St... 目录简介环境准备服务端实现(server.py)客户端实现(client.py)运行效果扩展方向常见问题结

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可