由于项目项目中最近用到v8引擎,项目由sparkmonkey切换到v8后,性能有了较大的提升,不过美中不足的是,启动时间较长,查看v8相关的文档,可以使用snapshot快照技术加快启动速度,因此觉得自己编译v8,加速启动。
在编译过程中遇到各种问题,首先说编译环境,项目需求是在android中使用v8快照,一般生成android平台的v8链接库有三种形式,在windows环境编译,在windows环境下使用cgwin编译,在linux环境下编译。
使用window环境编译
v8最新版本会强制绑定到vs2017,就算指定仅编译android平台也不能拿避免,没有装vs2017,目前项目使用vs2015,升级设计比较多的人,故舍弃此方案。(可能有其他参数避免这种绑定,不了解暂时没有深究)
使用window环境下cgwin编译
在cgwin环境下前期正常,但在相关脚本的调用中,遇到一个路径中斜杠”\”和反斜杠”/”的报错,由于关联脚本是从远程库自动下载,无法本地修改,如果要一一修改,需要将脚本加入到本地索引中,因此也没有使用这种方案。
使用linux环境编译
使用linux环境编译目前遇到问题最少,基本都是自动脚本执行完成,linux中还缺少部分系统库,手动添加一下就好。
开始编译v8,分为三个部分,第一个准备环境,linux使用虚拟机wmware,装centos最新稳定版本,注意硬盘要分配30G以上,因为要下载ndk以及一大堆第三方代码,建议留足编译空间。
前期准备
装完centos后,先需要安装gcc gcc-c++
yum install -y gcc yum install -y gcc-c++
安装depot_tools,主要用来下载脚本,有两个工具 fetch,gclient
git clone https://chromium.googlesource.com/chromium/tools/depot_tools
修改系统环境变量,将depot_tools加入到系统命令当中
vim /etc/profile ... export PATH=/*(目录)/depot_tools:$PATH
编译可以使用fetch v8来默认编译,这条命令相当于先建立一个默认的.gclient配置描述文件,然后再指向gclient sync下载相关依赖项目,我们可以采用自己建立.gclient文件定制下载选项
gclient config https://github.com/v8/v8.gi