在windows系统下编译node18

142 阅读2分钟

在windows平台上编译node

具体步骤可以参考: github.com/nodejs/node…

我使用的平台是 windows, 想要学习的是 node18 的版本, 所以参阅该文档的编译方式.

github.com/nodejs/node…

  • 准备操作

# find your vcpkg
# double check vcpkg install the related file
vcpkg owns zlib.lib
vcpkg owns zlib1.dll
vcpkg integrate remove
  • 现在一些必要的环境, 注意安装这些都需要配置环境变量

这里 emmm. 我的版本信息和它有些许不一致, 但也整正常编译过了. . .

python: apps.microsoft.com/detail/9nrw…

nasm: www.nasm.us/

  • 下载指定版本的node

下载对应的压缩包

然后解压后, 通过 管理员 权限打开我们的cmd, 然后 执行 ./vcbuild.bat 进入漫长时间的等待

编译完成之后, 会在当前目录下创建一个新的目录 out/Release

同时, 在vcbuild所在的这个目录下, 创建 node.sln这个vs的解决方案

直接双击, 用vs打开.

  fprintf(stdout, "hello, node. windows main method running\n");

然后进行debug模式的编译

a.js的内容为

console.log("hello, world")

进行debug编译, 进行漫长的等待.

我们会在弹出的控制台上看见这样的输出.

Great! 接下来我们可以自己对着node.js代码随意捣鼓, 直到实现我们自己的node.js了 😉 只要我们想

在信息时代,客观障碍已不复存在。所谓障碍都是主观上的。

如果你想动手开发什么全新的技术,你不需要几百万美元的资金,你只需要在冰箱里放满比萨和可乐,再有一台便宜的计算机,和为之献身的决心。 -DOOM启示录

来点有意思的话题吧. 我们console是如何输出的呢? 从 node 的main运行, 到process的初始化, 到env的初始化, 等

他的输出流真的是process.stdout 嘛?

那process.stdout是谁呢?

从node18的源码中, 可以看到为了维护兼容性, 我们可以写出如下的代码 , 不过node.js的源码对于我而言, 有点猪脑过载了, 还是自己太菜了. 后期可能会学习一些简单一点的代码

例如 cpython ? 也可能是 quickJS? 以后在说吧~

不过用一门语言实现了另一门语言, 这真的很酷啊 😎

一起加油 : )

const myConsole = new console.Console(process.stdout, process.stderr);
myConsole.log("对的, 这是我们自己创建的console!");