You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I don't think we touch the generic arm-linux-gnueabihf toolchain anywhere in our CI lineup because it doesn't quite cover the cases we want; or at least it hasn't in the past. It could be you're hitting a genuine bug because it's missing in our coverage, my guess would be something else about the configuration steps involved here though.
Update: it's actually in ./out/tools/v8_gypfiles/v8_base_without_compiler.host.mk. The reported url in console is not accurate.
Looks build failure will cause mk file auto delete. like I can't `tools/v8_gypfiles/v8_base_without_compiler.host.mk` in following build failure:
/tmp/cc2FUjAY.s: Assembler messages:/tmp/cc2FUjAY.s:7: Error: invalid char '{' beginning operand 1 `{r3-r11'/tmp/cc2FUjAY.s:8: Error: too many memory references for `mov'/tmp/cc2FUjAY.s:9: Error: too many memory references for `mov'/tmp/cc2FUjAY.s:10: Error: no such instruction: `blx r3'/tmp/cc2FUjAY.s:11: Error: too many memory references for `add'/tmp/cc2FUjAY.s:12: Error: invalid char '{' beginning operand 1 `{pc}'tools/v8_gypfiles/v8_base_without_compiler.host.mk:710: recipe for target '/root/node/out/Release/obj.host/v8_base_without_compiler/deps/v8/src/heap/base/asm/arm/push_registers_asm.o' failed
We've just locked down 15.x @ nodejs/build#2423 and it's not changing for that.
16.x planning has opened up @ nodejs/build#2445 but the only thing that's been agreed is that we need to get to at least GCC 7.
The problem with the cross compiler is that we don't have the nice backward compatibility afforded by devtoolsets on CentOS like on our other Linux release builders. Vanilla GCC is pretty sad for binary compatibility in that it's tied directly to libc and libstdc++ versions. So your binaries become tied to the computer you build on; so the GCC version and base operating system version matters. We'll have to look at the 18.04 support window and see if it aligns OK with the 16.x window (I haven't checked yet). But there's even risks with that and pulling in a libstdc++ (or just a libc) that is too new and then our binaries won't work on older platforms.
This issue has been marked as stale due to 210 days of inactivity.
It will be automatically closed in 30 days if no further activity occurs. If this is still relevant, please leave a comment or update it to keep it open.
This issue has been automatically closed after 30 days of inactivity following its stale status (no activity for a total of 120 days).
If this is still relevant, feel free to reopen it or leave a comment with additional details so we can continue the discussion.
Activity
rvagg commentedon Sep 21, 2020
This is for armv6 (ancient, tho used by unofficial-builds still) and armv7, primarily aimed at Raspberry Pi as a baseline:
https://github.com/nodejs/build/blob/364b8a9d0efe473b22cc04e6b4fa63a4b5e1d67a/ansible/roles/docker/files/cc-selector.sh is the script that figures out what it needs to compile and sets up the environment for compiling using environment variables which
configure&Makefileuse.Cross compile tools used are here https://github.com/rvagg/rpi-newer-crosstools
gengjiawen commentedon Sep 23, 2020
@rvagg Just to make sure, can this be done to in a docker image ?
gengjiawen commentedon Sep 23, 2020
gengjiawen commentedon Sep 23, 2020
Below failed with new error.
Failed with:
rvagg commentedon Sep 23, 2020
Yep, here's the Dockerfile we use for all the cases https://github.com/nodejs/build/blob/master/ansible/roles/docker/templates/ubuntu1604_arm_cross.Dockerfile.j2
I don't think we touch the generic arm-linux-gnueabihf toolchain anywhere in our CI lineup because it doesn't quite cover the cases we want; or at least it hasn't in the past. It could be you're hitting a genuine bug because it's missing in our coverage, my guess would be something else about the configuration steps involved here though.
gengjiawen commentedon Sep 26, 2020
@rvagg Thanks. That's great help. With the help of nodejs/TSC#931 (comment) by @mmarchini , I successfully build arm version. Though not running due to kernel.
My previous build failure reason stays unknown though. Maybe related to gcc (I am on ubuntu 20.04 with gcc 9.3) ?
gengjiawen commentedon Sep 26, 2020
Update: it's actually in ./out/tools/v8_gypfiles/v8_base_without_compiler.host.mk. The reported url in console is not accurate.
Looks build failure will cause mk file auto delete. like I can't `tools/v8_gypfiles/v8_base_without_compiler.host.mk` in following build failure:
How do I prevent this ?
gengjiawen commentedon Sep 28, 2020
@rvagg Is there a plan for
cc-selector.shsupport ubuntu 20.04 and gcc-9 ?rvagg commentedon Sep 28, 2020
@gengjiawen we haven't directly discussed potential updates to this yet. It's designed to match https://github.com/nodejs/node/blob/master/BUILDING.md#official-binary-platforms-and-toolchains and needs to ensure maximum binary compatibility.
We've just locked down 15.x @ nodejs/build#2423 and it's not changing for that.
16.x planning has opened up @ nodejs/build#2445 but the only thing that's been agreed is that we need to get to at least GCC 7.
The problem with the cross compiler is that we don't have the nice backward compatibility afforded by devtoolsets on CentOS like on our other Linux release builders. Vanilla GCC is pretty sad for binary compatibility in that it's tied directly to libc and libstdc++ versions. So your binaries become tied to the computer you build on; so the GCC version and base operating system version matters. We'll have to look at the 18.04 support window and see if it aligns OK with the 16.x window (I haven't checked yet). But there's even risks with that and pulling in a libstdc++ (or just a libc) that is too new and then our binaries won't work on older platforms.
JMLX42 commentedon Nov 27, 2022
@gengjiawen did you ever find out?
I'm running into the same issue with this build script. I'm using the same Docker image in both cases, but:
I'll try to upgrade Docker.
JMLX42 commentedon Nov 27, 2022
Upgrading Docker (Ubuntu 18.04 / Docker 20.10) apparently worked!
github-actions commentedon Jun 27, 2026
This issue has been marked as stale due to 210 days of inactivity.
It will be automatically closed in 30 days if no further activity occurs. If this is still relevant, please leave a comment or update it to keep it open.
github-actions commentedon Jul 28, 2026
This issue has been automatically closed after 30 days of inactivity following its stale status (no activity for a total of 120 days).
If this is still relevant, feel free to reopen it or leave a comment with additional details so we can continue the discussion.