• 科普 | 编译 V8 源码


    2017-02-13 justjavac 象尘说

    对于JavaScript程序员来说,可以瞧一瞧justjavac给大家写的科普类读物,V8引擎的分析,“也许你不懂C++”,但是你可以了解一下,总是好的。

    本系列得到了justjavac的授权,同意我在公众号中转载,来源于知乎专栏:https://zhuanlan.zhihu.com/v8core

    编译 V8 源码


    V8 的源码已经从 google code 迁移到了 github,而版本控制工具也从 svn 换成了 git。V8 源码地址 v8/v8

    网上大部分讲解 V8 编译的文章基本都是使用的 GYP。而 V8 的 wiki 也已经写明了:

    GYP has been deprecated in favor of GN.

    V8 团队已经使用 GN 替代了 GYP。GYP 和 GN 并不是构建系统,V8 使用的构建系统使用的是 Ninja,而 GN 是用来生产 Ninja 构建文件的工具。

    GN 相比 GYP 的优势:

    1. 生成的 GYP 文件可读性高。

    2. 速度快(Chromium 团队说 GN 比 GYP 快 20 倍)

    3. GN 提供了更加丰富实用的工具和配置依赖,比如 gn check、public_deps、data_deps 等

    从去年十月(2016年10月)开始,Chromium 已经不提供对 GYP 的支持,但是 Chromium 文档中说 Chromium 使用的相关项目(例如 V8)依然支持 GYP 工具。

    我们不需要手动安装 GN,GN 被包含在 depot_tools 中。depot_tools 提供了很多实用工具:gclient、gcl、git-cl、cpplint.py、pylint 等。安装 depot_tools 需要先安装 git 和 python。

    先 clone depot_tools 文件

    git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

    将 depot_tools 添加到系统环境变量 PATH:

    export PATH=`pwd`/depot_tools:"$PATH"

    如果是 windows 系统,需要使用 Msys (Git for Windows),暂不支持 Cygwin。

    安装 depot_tools 构建系统的所有依赖,运行:

    gclient sync

    获取 V8 源码(包含了所有分支和依赖):

    fetch v8
    cd v8

    进入 V8 目录,v8gen 生成 ninja 构建文件:

    tools/dev/v8gen.py x64.release

    编译源码,生成可执行文件,目标系统 x64:

    ninja -C out.gn/x64.release

    编译完的文件名不是 V8,而是 D8。

    运行测试(非必需):

    tools/run-tests.py --gn

    注意:如果仅仅是下载了 V8 的源码,是无法编译成功的,必须使用 depot_tools

    如果想自定义编译 V8,可以阅读 Building with GN。通过自定义编译参数,可以更好的调试 javascript 以及 V8 引擎。

    参考文件:

  • 相关阅读:
    转载:QTableView中嵌入可视化组件
    pyqt声音输入
    pyqt二进制和图片的转换
    LeetCode(92):反转链表 II
    LeetCode(91):解码方法
    LeetCode(90):子集 II
    LeetCode(89):格雷编码
    LeetCode(88):合并两个有序数组
    LeetCode(87):扰乱字符串
    LeetCode(86):分隔链表
  • 原文地址:https://www.cnblogs.com/Unknw/p/6539187.html
Copyright © 2020-2023  润新知