gpt4 book ai didi

node.js - 在 32 位系统上编译 node.js

转载 作者:搜寻专家 更新时间:2023-10-31 23:10:16 25 4
gpt4 key购买 nike

我需要在 32 位系统上编译 node.js 以兼容我已有的代码。

我从 nodejs.org 的源代码开始编译它。然后我开始更改 common.gypi 文件中的第 164-166 行。它是:

164           [ 'target_arch=="x64"', {
165 'cflags': [ '-m64' ],
166 'ldflags': [ '-m64' ],
167 }],

现在是:

164           [ 'target_arch=="x64"', {
165 'cflags': [ '-m32' ],
166 'ldflags': [ '-m32' ],
167 }],

当我再次尝试时,出现了这些错误:

../deps/v8/src/execution.h:259: 错误:整数常量对于“长”类型来说太大../deps/v8/src/execution.h:260: 错误:整数常量对于“长”类型来说太大../deps/v8/src/execution.h:259: 错误:函数调用不能出现在常量表达式中../deps/v8/src/execution.h:260: 错误:函数调用不能出现在常量表达式中

这些错误是指这些行:

#ifdef V8_TARGET_ARCH_X64
static const uintptr_t kInterruptLimit = V8_UINT64_C(0xfffffffffffffffe);
static const uintptr_t kIllegalLimit = V8_UINT64_C(0xfffffffffffffff8);

我相信这段代码来自谷歌的 v8 源代码。

如果有任何关于如何修复这些特定编译错误和/或如何在 32 位系统上编译 64 位 node.js 的建议,我将不胜感激。我所做的大部分研究是如何为 64 位系统编译 32 位的东西。

最佳答案

如果你想构建一个 x86_32 版本的 Node ,你正在为错误的目标架构修改参数。相反,将 --dest-cpu 参数提供给配置脚本,如下所示:

git clone git://github.com/joyent/node.git
cd node
./configure --prefix /usr/local --dest-cpu ia32
make

如果这些命令成功完成,./out/Release/node 中应该有一个工作的 x86_32 二进制文件:

~/node$ file -b ./out/Release/node
ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), dynamically linked
(uses shared libs), for GNU/Linux 2.6.26, (...), not stripped
~/node$ ./out/Release/node
> 1 + 1
2

您可以使用 sudo make install 在您正在运行的系统中安装它(在您在上面的 --prefix 参数中指定的前缀处)。

请注意,这需要设置一个可用的 C 和 C++ 编译器。在 Debian/Ubuntu 上,sudo apt-get install build-essential(或 build-essential:i386 如果您正在交叉编译)应该让您开始。在基于 rpm 的发行版上,尝试 sudo yum groupinstall "Development Tools""Development Libraries"

关于node.js - 在 32 位系统上编译 node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11835704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com