必备软体
- python : 可以到这里下载「 http://www.python.org/getit/」。
- 我是使用 2.7.3版本,注意一定要使用与 scons 相同位元的版本,因为目前 scons 只有 32位元的版本,所以python 也要选择 32 位元的版本,否则在安装 scons 时,它在 registry 会找不到正确 python 路径。
- scons: http://sourceforge.net/projects/scons/files/scons/
- scons 是编译用的软体,可以下载 2.1.0 版本 「scons-2.1.0.win32.exe」
- visual studio 2008
- windows SDK 6.0A
- v8 engine : http://v8.googlecode.com/svn/trunk/
- 使用 svn 下载 。
v8 engine 使用一般的安装方式
在 windows 编译 c 语言,使用命令提示字元,在开始->执行->输入「cmd」,找到 cmd 后,按右键,使用 Administrator 管理员身分执行程式。
在执行编译之前,首先要加入 Python 与 scons 的指令路径,如果你直接在 cmd 中输入 scons or python,会得到下列的错误讯息「 xx is not recognized as an internal or external command」
set PATH = C:\Python27_32;C:\Python27_32\Scripts;%PATH%
set PATH = C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin;%PATH%
将下载回来的 v8 trunk中的 SConstruct 第 341 行的 「/WX」 删除,/WX 会使得 visual studio 编译的时候,将 warning 当成是 error 来处理,移除后就可以正常编译了。
- 'all': {
- 'WARNINGFLAGS': ['/W3', '/WX', '/wd4351', '/wd4355', '/wd4800']
- },
- 'all': {
- 'WARNINGFLAGS': ['/W3', '/wd4351', '/wd4355', '/wd4800']
- },
接著执行 compile 的指令, scons env 中的 visual studio 路径要依照不同的版本而修改。
- compile 方式 1
- "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
- scons env="PATH:%PATH%,INCLUDE:%INCLUDE%,LIB:%LIB%" library=shared mode=release snapshot=on
- compile 方式 2
- scons env="PATH:C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools,INCLUDE:C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include;C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Include;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include,LIB;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib;C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Lib;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib" mode=release library=shared snapshot=on
使用 GYP +cygwin 安装
- 登入 cygwin , 下载 v8 truck
- svn checkout http://v8.googlecode.com/svn/trunk/ v8
- cd v8
- 下载 gyp 到 v8 truck目录
- svn co http://gyp.googlecode.com/svn/trunk build/gyp
- svn co http://src.chromium.org/svn/trunk/deps/third_party/cygwin@66844 third_party/cygwin
- 执行 gyp_v8 : python build/gyp_v8
- /cygdrive/c/"Program Files (x86)"/"Microsoft Visual Studio 9.0"/Common7/IDE/devenv.com /build Release build/All.sln
这个流程可以正确的编译 v8 ,不过在我的系统中会出现 warning : 「error C2220: warning treated as error - no 'object' file generated,warning C4819: The file contains a character that cannot be represented in the current code page (950). Save the file in Unicode format to prevent data loss」
因为预设编译的语法是有定义 -D /WX ,这个定义值,会使得 visual studio 将warning 转成 error ,造成编译失败,目前我还没找到方便一点的解决,只能用 visual studio 打开 All.sln ,再将每一个专案设定为不显示 warning,先对专案按右键-> Properties-> confiuration Propertie -> c/c++ ->general ->关掉「treat warning as errors」,最后再按 visual studio 的 build 进行编译。
错误讯息处理
global_intermediate\libraries.c No such file or directory
下载 third_party/cygwon
svn co http://src.chromium.org/svn/trunk/deps/third_party/cygwin@66844 third_party/cygwin
$(OutDir)/obj/global_intermediate/d8-js.cc No such file or directory
主要原因是路径错误,找不到这个档案 ,删除错误的档案,再新增正确的档案「build\Release\obj\global_intermediate\d8-js.cc」。