[原创]Windows下Google V8 javascript引擎编译
项目用到将v8嵌入到C++的情况,公司没时间研究,只有在家研究,编译过程一堆坑。记录一下。
网上百度的都是基于vs2010,或者早版本的v8编译,最新版本应该使用vs2013\vs2015。本文介绍的是2016-04-12下载最新版本v8源代码情况下的v8编译。
0x01 准备工作
下载安装:git\svn\python27
0x02 V8源代码
v8源代码托管于 https://chromium.googlesource.com/v8/v8.git,要FQ。
github上有镜像同步的源,可以从这里下载:https://github.com/v8/v8
0x03 gyp
在以前版本的v8中,在tools/visual_studio下似乎有编译工程,最新版本的已经移除。需下载gyp生成对应的编译设置。
这个网上有下载,不知道怎么从v8 wiki中给的 http://code.google.com/p/gyp/ 地址进行下载,于是从github找到了镜像:
https://github.com/bnoordhuis/gyp/tree/master/pylib/gyp
下载后放到build/gyp目录下即可
0x04 cygwin和icu
在third_party目录下新建cygwin/icu两个目录,分别使用svn从下面两个地址下载对应代码:
svn co https://src.chromium.org/chrome/trunk/deps/third_party/cygwin
svn co https://src.chromium.org/chrome/trunk/deps/third_party/icu52
cygwin建议从其他地方下载,当时下来至少半小时啊。。
0x05 clang
在tools/clang/scripts目录下,通过svn下载:
svn co https://src.chromium.org/chrome/trunk/src/tools/clang/scripts
0x06 depot_tools
关于这个库,好像网上都没有怎么提,需要下载到和build同级的depot_tools目录下:
可以从google的托管网站上下:git clone https://chromium.googlesource.com/chromium/tools/depot_tools
但那个慢啊,我从github上找了个最近的clone,下了个zip包解压:https://github.com/mlufei/depot_tools
0x07 编译
启动命令行工具,由于我装的是VS2013,设置环境变量:
set DEPOT_TOOLS_WIN_TOOLCHAIN=0 ; 不设置这个会自动去下载sdksetup.exe
set GYP_MSVS_VERSION=2013
好了,现在最坑爹的问题来了,编译提示:
src/tracing/trace-event.h(10): fatal error C1083: Cannot open include file: 'base/trace_event/common/trace_event_common.h': No such file or director
trace_event_common.h这个文件,无论是从镜像还是google自身的托管仓库都找不到。好吧,想办法去找吧。
将文件放到\base\trace_event\common\trace_event_common.h后,重新编译,
然后又会遇到下面的编译警告,由于工程将警告视为错误,编译不过:
warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
这是由于相关文件中含有unicode字符,删除即可。
当目前为止,除测试用例相关的工程都应该可以编译通过了。我这里编译后\build\Debug\lib目录下是这个样子的:
[原创]Windows下Google V8 javascript引擎编译的更多相关文章
- V8:V8(Javascript引擎)
ylbtech-V8:V8(Javascript引擎) Lars Bak是这个项目的组长,目前该JavaScript引擎已用于其它项目的开发.第一个版本随着第一个版本的Chrome于2008年9月2日 ...
- V8 javascript 引擎
V8是一个由丹麦Google开发的开源java script引擎,用于Google Chrome中.[2]Lars Bak是这个项目的组长.[3] V8在执行之前将java script编译成了机 ...
- 在Android上使用Google V8 JS 引擎
在cantk-runtime中直接使用的webview,通过JAVA扩展接口把Canvas的2d Context的API定向到JNI,通过OpenGL来图形加速,渲染速度大大提高.后来测试发现在大部分 ...
- Windows下使用Visual Studio 2010编译ffmpeg全过程
在visual studio 2010中调用ffmpeg http://blog.sina.com.cn/s/blog_4178f4bf01018wqh.html Windows下使用Visual S ...
- 用NAN简化Google V8 JS引擎的扩展
通过C++扩展Google V8 JS引擎的文章很多,Google V8 JS带的例子也容易明白.但是大部分文章都是Hello World型的,真正使用时发现处处是坑.扩展V8最经典的例子就是node ...
- 配置 Windows 下的 nodejs C++ 模块编译环境 安装 node-gyp
配置 Windows 下的 nodejs C++ 模块编译环境 根据 node-gyp 指示的 Windows 编译环境说明, 简单一句话就是 "Python + VC++ 编译环境&quo ...
- V8 Javascript 引擎设计理念
Netscape Navigator 在 90 在年代中期对 JavaScript 进行了集成,这让网页开发人员对 HTML 页面中诸如 form .frame 和 image 之类的元素的访问变得非 ...
- Windows下使用Visual Studio 2010 编译ffmpeg全过程
(注意:请务必先阅读:七,后记补充:) ffmpeg是一个开源的多媒体库,使用非常广泛. 在linux下编译ffmpeg非常简单,而在windows下编译就不是那么容易了.一般在windows下使用M ...
- 【FFMPEG】Windows下使用Visual Studio 2010编译ffmpeg全过程
原文 http://www.cnblogs.com/xylc/p/3683203.html 主题 FFmpegWindowsVisual Studio ffmpeg是一个开源的多媒体库,使用非常广泛 ...
随机推荐
- 1228.1——计算器(未使用MVC设计模式)
#import "ViewController.h"typedef enum{ kStausNum, kStausOperation}kStaus; typedef e ...
- 手算KMP匹配的Next值和Nextval值
文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作. KMP 算法我们有写好的函数帮我们计算 Next 数组的值和 Nextval 数组 ...
- sizeof对int long double char的使用
主要针对int long char double 字节长度的识记. 1 #include <stdio.h> 2 3 int main() 4 { 5 int a[100]; 6 int ...
- 利用glibc中锁结构的信息解决死锁问题
首先非常感谢老丁和老李同学的帮助,没有他们这个问题估计又得搞很久.遇见这个问题,真是头疼.不熟悉代码.不熟悉流程,但是领导还是把活给排下来了(实在不解),只能硬着头皮找了. 问题是这样的,cac ...
- centos 6.4从源码安装mysql 5.6笔记
上周在安装mysql时遇到了些许麻烦,今天整理下. 在代码目录建立obj文件夹. 在obj目录下,执行cmake .. -DXXX // XXX表示一些参数,详见http://dev.mysql.c ...
- 关于 jQuery中 function( window, undefined ) 写法的原因
今天在读 jQuery 源码的时候,发现下面的写法: (function(window,undefined){ ...// code goes here })(window); window 作为参数 ...
- FTP进行上传下载文件
1.需要引入外部jar包:commons-net-2.0.jar(或者是子包commons-net-ftp-2.0.jar) 2.需下载ftp服务器 3. 本地电脑访问ftp服务器格式:ftp://用 ...
- [转]fatal error: iostream.h: No such file or directory
iostream.h是非标准头文件,iostream是标准头文件形式.iostream.h时代没有名词空间,即所有库函数包括头文件iostream.h都声明在全局域.为了体现结构层次,c++标准委员会 ...
- nginx+mysql+php
根据生产环境安装操作系统(centos 6.0 64位系统),安装完成后,使用Xshell通过ssh协议连接服务器.ssh 用户名@IP+回车+输入密码后登录系统.#mkdir -p /home/to ...
- Meteor Shower(POJ 3669)
Meteor Shower Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12816 Accepted: 3451 De ...