????????由于之前编译v8默认使用clang.exe,导致编译出的库文件函数都带有__1命名空间,与cl编译的程序无法配合。尝试使用msvc的cl.exe编译(编译选项is_clang=false),却又在Link v8的时候报出了一堆乱码的错误,也不知道如何解决。所以换个思路,尝试编译Node.js,从编译出的文件中得到v8相关的库文件。
一、Node.js简介
????????Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时。
二、下载源码
? ? ? ? GitHub上下载源码:
git clone https://github.com/nodejs/node.git
三、编译
????????执行源码目录下的vcbuild.bat即可编译,后跟参数 debug/release
cd node
.\vcbuild.bat debug
? ? ? ? ?1. 报错了,虽然不明白什么原因,但是看到 "install it or build with openssl-no-asm ",所以可以在编译的时候加上这个参数。
? ? ? ? 2. 再次报错,看提示信息,是因为Node.js仅支持Python3.6及以上,而寻找Python时得到的却是Python2.7.18,可我的本地是安装有高版本的Python。
?????????原来是因为depot_tools中有python.bat,由于之前编译v8时depot_tools设置有环境变量,所以python命令优先找到了这个批处理。批处理中读取了?python_bin_reldir.txt 文件,而这个文件中只有一个目录地址?bootstrap-2@3_8_10_chromium_19_bin\python\bin 而这个目录下的python.exe是2.7版本的。
????????解决方法:屏蔽python.bat文件。
继续编译……
编译完毕后会在out\Debug目录下生成node.exe及其他库文件。lib文件夹中会有v8相关的lib文件。
|