すでに持っているコードと互換性を持たせるには、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:エラー:整数定数が「long」タイプには大きすぎます../deps/v8/src/execution.h:260:エラー:整数定数が大きすぎます'long'型../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ビットのものをコンパイルする方法です。