Linux 版本的 Node.js 是否与 libv8 捆绑在一起?

Jez*_*Jez 4 debian package-management node.js

我对 Node.js 如何访问 libv8 有点困惑。

我下载了 Node.js 6.5.0 版的 64 位“Linux 二进制文件 (.tar.xz)”,并将它们解压到/opt我的 Debian Linux 机器上。当我运行时node -e "console.log(process.versions.v8)",我得到5.1.281.81,这是我希望在 Node 6.5.0 上运行的 V8 的最新版本。但是,当我查看 Debian 中的 Synaptic Package Manager 时,它的nodejs包依赖于该libv8-3.14.5包;V8 的旧版本。

那么它是什么 - Node 是使用已安装的 libv8(包管理器指示我的机器上安装了 3.14.5)还是 V8 与 Node.js 捆绑在一起?是否编译成node二进制文件?如果是这样,为什么包管理器具有libv8依赖性?

Ste*_*itt 8

当您从下载站点下载 Node.js 时,您获得的二进制文件与 libv8 5.1.281.81 静态链接。有多种方法可以验证这一点:

您下载的档案不使用 Debian 的打包系统,因此不考虑包管理器的依赖项。如果您没有libv8-3.14.5明确安装该软件包,则系统上安装的其他一些软件包可能依赖于它。如果实际上没有什么需要它,您可以删除它,您libv8-3.14.5会看到没有它的node二进制文件也能/opt正常工作。

在任何情况下,即使使用打包版本的 Node.js,您也不一定会看到对 libv8 的依赖,因为Node.js 包含 V8 引擎的源代码;它不是一个单独的库(至少不是用于 Node.js)。

(要运行上述命令,您需要binutils为nm和安装包c++filt。)