Node.js的编译(转)

之前编译和简单测试了Google V8引擎,Node.js就是在V8引擎的基础上进一步扩展打造的服务端的JavaScript解释器,当然这个功劳自然离不开牛叉的V8了

V8的设计最初为了浏览器使用,而Node.js让它在服务端继续发扬光大,熟悉MongoDB的一定会想在这个数据库中的引擎是什么了,那是将来的问题了

1:下载最新版本

http://nodejs.org/download/

下载node-v0.10.16.tar.gz

3:测试VS2010编译

打开node.sln


包括多个子工程

从代码量来看,该Node.js工程的源码量有79的左右

所依赖的第三方包包括:

cares

http_parser

npm

openssl

uv

v8

zlib

这些依赖包可谓庞大,多大70多M

通过VS2010编译输出结果为:

========== 全部重新生成: 成功 17 个,失败 2 个,跳过 0 个 ==========

两个错误:

错误    34    error MSB6006: “cmd.exe”已退出,代码为 1。    C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets    151    6    node_js2c
错误    123    error C1083: 无法打开包括文件:“node_natives.h”: No such file or directory    F:\pbase\node-v0.10.16\src\node_javascript.cc    24    1    node
两个工程编程失败

node_js2c

node

查看错误


貌似下载的代码中确实没有node_natives.h

分析原因

Node使用v8附带的js2c.py将node的js代码转化为c语言的数组,也就是node_natives.h,然后直接编译进node的可执行文件中

应该是缺少了将node.js编译为node_natives.h的原因。

在tools下面复制node.js,然后运行js2c.py获取到node-natives.h

huareal@gpx /cygdrive/f/pbase/node-v0.10.16/tools
# ./js2c.py  node_natives.h  ../src/node.js

重新编译

还有一个失败(忽略,已经生成node.exe)

转自:http://blog.youkuaiyun.com/huareal/article/details/10086523

参考:http://www.infoq.com/cn/articles/nodejs-npm-install-config


### 编译 Node.js 源码的步骤 编译 Node.js 的源代码需要一定的环境准备和操作流程。Node.js 是一个由 C++ 和 JavaScript 构成的庞大项目,其源码包含多个组件,主要通过官方提供的构建工具来完成编译过程。 #### 1. 准备编译环境 在 Linux 系统上编译 Node.js 源码前,需要确保系统中安装了必要的依赖项,包括 Python、make、GCC/G++(或其他 C/C++ 编译器)以及 Git 工具等。Python 版本应为 2.x 系列,因为某些构建脚本可能不兼容 Python 3[^4]。 ```bash sudo apt update sudo apt install python build-essential git -y ``` 如果你使用的是较新版本的 Node.js(如 v12 及以上),建议升级 GCC 到支持 C++17 的版本,以避免编译过程中出现兼容性问题。 #### 2. 获取 Node.js 源码 从 GitHub 官方仓库克隆 Node.js 的源代码: ```bash git clone https://github.com/nodejs/node.git cd node ``` 你也可以选择特定的版本标签进行切换,例如: ```bash git checkout v12.2.0 # 替换为你想要的版本号 ``` #### 3. 配置编译选项 Node.js 使用 `./configure` 脚本来配置编译参数,默认情况下会将 Node 安装到 `/usr/local/` 目录下。如果需要自定义安装路径,可以添加 `--prefix=/your/custom/path` 参数。 ```bash ./configure ``` #### 4. 开始编译 使用 `make` 命令开始编译 Node.js 源码。这个过程可能会持续较长时间(大约半小时或更久),具体取决于你的机器性能。 ```bash make ``` 你可以使用 `-j` 参数指定并行编译线程数,以加快速度。例如: ```bash make -j4 ``` #### 5. 安装编译结果 编译完成后,使用 `make install` 将 Node.js 安装到配置时指定的目录中。 ```bash sudo make install ``` 安装完成后,可以通过以下命令验证是否成功: ```bash node -v npm -v ``` 如果输出了 Node.js 和 npm 的版本号,则说明编译安装成功。 #### 6. 环境变量配置(可选) 如果你没有使用默认路径安装 Node.js,或者希望全局使用该版本,需要将 Node 的 `bin` 目录添加到系统的 `PATH` 环境变量中。编辑 `/etc/profile` 或用户级的 `.bashrc` 文件,并添加如下内容: ```bash export PATH=$PATH:/your/custom/path/bin ``` 然后执行: ```bash source /etc/profile # 或 source ~/.bashrc ``` --- ### 注意事项 - 如果你在编译过程中遇到错误,尤其是与动态库相关的错误,可能需要手动更新系统的动态链接库或安装缺失的开发包。 - Node.js 的源码结构较为复杂,涉及 V8 引擎、libuv、第三方模块等多个组件。对于深入理解其架构,建议参考其官方文档和社区资源[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值