在 armv7 上为 armv7 编译 nodejs 10.36
Compile nodejs 10.36 for armv7 on armv7
我尝试在 chroot (armel wheezy) 环境中的嵌入式 linux 上编译 node.js。该系统具有所有必要的工具版本。
- Python2.7.3
- 海湾合作委员会 4.6
- GNU 制作 3.81
CPU信息:
处理器:ARMv7 处理器版本 10 (v7l)
处理器:0
BogoMIPS:790.52
处理器:1
BogoMIPS:790.52
处理器:2
BogoMIPS:790.52
处理器:3
BogoMIPS:790.52
特点:swp half thumb fastmult vfp edsp neon vfpv3
CPU 实施者:0x41
CPU 架构:7
CPU 变体:0x2
CPU 部分:0xc09
CPU 修订:10
经过多次尝试并在网上进行研究后,我可以编译它,但在 linking 时收到错误。
我执行以下操作:
export CFLAGS='-march=armv7-a'
export CXXFLGAS='-march=armv7-a'
./configure --dest-cpu=armv7 --without-snapshot --without-ssl --dest-os=linux
我改变了选项,但没有效果。
作为选项使用 --dest-cpu=arm 会导致编译错误(不支持 BLX)。因此,我使用了 armv7,它在这个系统上是正确的 CPU。
我在编译和 linking 后收到以下错误:
/root/node-v0.10.36/out/Release/obj.target/deps/v8/tools/gyp/libv8_base.a(platform-posix.o):
In function v8::internal::init_fast_log_function()':
platform-posix.cc:(.text+0x598): undefined reference to
v8::internal::CreateTranscendentalFunction(v8::internal::TranscendentalCache::Type)'
/root/node-v0.10.36/out/Release/obj.target/deps/v8/tools/gyp/libv8_base.a(platform-posix.o):
In function v8::internal::init_fast_sqrt_function()':
platform-posix.cc:(.text+0x5e4): undefined reference to
v8::internal::CreateSqrtFunction()' collect2: ld returned 1 exit
status make[1]: * [/root/node-v0.10.36/out/Release/node] Error 1
make[1]: Leaving directory `/root/node-v0.10.36/out' make: * [node]
Error 2
我不知道我可以对 link 文件做些什么。我怎样才能完成 linking 过程?
我找到了一个有效的解决方案。
我添加了参数 -mthumb-interwork 并在没有任何参数的情况下对其进行了配置。至此编译安装完毕
export CFLAGS='-march=armv7-a -mthumb-interwork'
export CXXFLAGS='-march=armv7-a -mthumb-interwork'
我尝试在 chroot (armel wheezy) 环境中的嵌入式 linux 上编译 node.js。该系统具有所有必要的工具版本。
- Python2.7.3
- 海湾合作委员会 4.6
- GNU 制作 3.81
CPU信息:
处理器:ARMv7 处理器版本 10 (v7l) 处理器:0 BogoMIPS:790.52
处理器:1 BogoMIPS:790.52
处理器:2 BogoMIPS:790.52
处理器:3 BogoMIPS:790.52
特点:swp half thumb fastmult vfp edsp neon vfpv3 CPU 实施者:0x41 CPU 架构:7 CPU 变体:0x2 CPU 部分:0xc09 CPU 修订:10
经过多次尝试并在网上进行研究后,我可以编译它,但在 linking 时收到错误。
我执行以下操作:
export CFLAGS='-march=armv7-a'
export CXXFLGAS='-march=armv7-a'
./configure --dest-cpu=armv7 --without-snapshot --without-ssl --dest-os=linux
我改变了选项,但没有效果。 作为选项使用 --dest-cpu=arm 会导致编译错误(不支持 BLX)。因此,我使用了 armv7,它在这个系统上是正确的 CPU。 我在编译和 linking 后收到以下错误:
/root/node-v0.10.36/out/Release/obj.target/deps/v8/tools/gyp/libv8_base.a(platform-posix.o): In function
v8::internal::init_fast_log_function()': platform-posix.cc:(.text+0x598): undefined reference to
v8::internal::CreateTranscendentalFunction(v8::internal::TranscendentalCache::Type)' /root/node-v0.10.36/out/Release/obj.target/deps/v8/tools/gyp/libv8_base.a(platform-posix.o): In functionv8::internal::init_fast_sqrt_function()': platform-posix.cc:(.text+0x5e4): undefined reference to
v8::internal::CreateSqrtFunction()' collect2: ld returned 1 exit status make[1]: * [/root/node-v0.10.36/out/Release/node] Error 1 make[1]: Leaving directory `/root/node-v0.10.36/out' make: * [node] Error 2
我不知道我可以对 link 文件做些什么。我怎样才能完成 linking 过程?
我找到了一个有效的解决方案。
我添加了参数 -mthumb-interwork 并在没有任何参数的情况下对其进行了配置。至此编译安装完毕
export CFLAGS='-march=armv7-a -mthumb-interwork' export CXXFLAGS='-march=armv7-a -mthumb-interwork'