v8引擎helloworld

2024-05-06 10:48
文章标签 引擎 v8 helloworld

本文主要是介绍v8引擎helloworld,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

分享请标明来自: https://www.css3.io/v8_helloworld.html

背景

v8引擎跟前端所用javascript语言密切相关。学习它有助于以后对node,以及浏览器内核学习。

官方地址:https://developers.google.com/v8/

目标

从编译源码到运行helloworld

实战记录

1.安装 depot_tools

这个工具是用来管理v8源码以及依赖的,把它的角色理解为包管理。因为v8的依赖很多,可能采用不同的源码版本管理方式,以及其它比较复杂的情况。很难用一些简单的现成的项目来管理依赖。于是乎就搞了这个。(纯属个人的理解)

官方地址:http://dev.chromium.org/developers/how-tos/install-depot-tools

2.下载v8源码

1.gclient (非必须,为了更新gclient工具本身)
2.fetch v8也可这样:
1.mkdir v8
2.cd v8
3.gclient config https://chromium.googlesource.com/v8/v8
4.gclient sync

3.源码build

make native -j4 library=shared snapshot=off说明:
这里编译为了动态链接库。这个点比较重要。
在mac上会得到一个libv8.dylib文件,linux是libv8.so.
-j4 表示用4个线程来编译
library=shared 表示编译成动态链接库
snapshot=off 会编译快一点更多参数请参照:https://github.com/v8/v8/wiki/Building%20with%20Gyp

参考:

include 文件目录结构如下:

├── libplatform
│ └── libplatform.h
├── v8-debug.h
├── v8-experimental.h
├── v8-platform.h
├── v8-profiler.h
├── v8-testing.h
├── v8-util.h
├── v8-version.h
├── v8.h
└── v8config.h

build 后native目录结构如下:

├── cctest
├── d8
├── generate-bytecode-expectations
├── hello-world
├── icudtl.dat
├── libfuzzer_support.a
├── libgmock.a
├── libgtest.a
├── libicui18n.dylib
├── libicuuc.dylib
├── libjson_fuzzer_lib.a
├── libparser_fuzzer_lib.a
├── libregexp_fuzzer_lib.a
├── libv8.dylib
├── libv8_base.a
├── libv8_libbase.a
├── libv8_libplatform.a
├── libv8_libsampler.a
├── libv8_nosnapshot.a
├── libwasm_asmjs_fuzzer_lib.a
├── libwasm_fuzzer_lib.a
├── obj
├── obj.host
├── obj.target
├── process
├── unittests
├── v8_shell
├── v8_simple_json_fuzzer
├── v8_simple_parser_fuzzer
├── v8_simple_regexp_fuzzer
├── v8_simple_wasm_asmjs_fuzzer
└── v8_simple_wasm_fuzzer

4.编译helloworld

g++ -I./include hello_world.cpp -o helloworld -L./out/native -lv8 -lv8_libbase -lv8_libplatform说明:
-I./include 指明头文件所在目录
-L./out/native 指明链接库根目录
-lv8 指明libv8.dylib v8动态链接库
-lv8_libbase 指明libv8_libbase.a
-lv8_libplatform 指明libv8_libplatform.a

注意:

1、libv8_libplatform.a 这个静态库在新版本的v8使用时是必须要的
这个库依赖libv8_libbase.a,所以二者都必须有。很多时候死在了这两个库没加上。

2、头文件include/libplatform/libplatform.h 里面代码依赖v8-platform.h需要改为正确的路径

#include "v8-platform.h" 
改为:
#include "../v8-platform.h"

这篇关于v8引擎helloworld的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

MySQL 存储引擎 MyISAM详解(最新推荐)

《MySQL存储引擎MyISAM详解(最新推荐)》使用MyISAM存储引擎的表占用空间很小,但是由于使用表级锁定,所以限制了读/写操作的性能,通常用于中小型的Web应用和数据仓库配置中的只读或主要... 目录mysql 5.5 之前默认的存储引擎️‍一、MyISAM 存储引擎的特性️‍二、MyISAM 的主

MySQL常见的存储引擎和区别说明

《MySQL常见的存储引擎和区别说明》MySQL支持多种存储引擎,如InnoDB、MyISAM、MEMORY、Archive、CSV和Blackhole,每种引擎有其特点和适用场景,选择存储引擎时需根... 目录mysql常见的存储引擎和区别说明1. InnoDB2. MyISAM3. MEMORY4. A

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争