Cross-build x64 host -> arm target fails in V8 host arch guard (v8config.h)
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- JavaScript
- Star
- 122k
- Fork
- 37.3k
- Merge trung bình
- 4 ngày 2 giờ
- Pull request đã merge (30 ngày)
- 283
Mô tả
Summary
Cross-building Node.js for --dest-cpu=arm (32-bit ARM / armhf) from an x64 Linux host fails in V8 host object compilation due to a host/target architecture guard in deps/v8/include/v8config.h.
Environment
- Host: Ubuntu 24.04 x86_64
- Target: Raspberry Pi 3, 32-bit Raspbian Buster (armhf)
- Cross toolchain:
arm-linux-gnueabihf-*
Repro
From x64 host:
./configure \
--dest-os=linux \
--dest-cpu=arm \
--cross-compiling \
--with-arm-float-abi=hard \
--with-arm-fpu=neon \
--without-node-snapshot
make -j1
Failure
Host V8 compilation fails with:
#error Target architecture arm is only supported on arm and ia32 host
Coming from deps/v8/include/v8config.h:
#if (V8_TARGET_ARCH_ARM && !(V8_HOST_ARCH_IA32 || V8_HOST_ARCH_ARM))
#error Target architecture arm is only supported on arm and ia32 host
#endif
In generated host makefiles (for example out/tools/v8_gypfiles/v8_libplatform.host.mk), host objects are compiled with -DV8_TARGET_ARCH_ARM, which triggers this guard on x64 hosts.
Notes
--without-node-snapshotdoes not avoid this, as host V8 objects are still built with ARM target macros.- A local workaround changing the guard to include x64 host allows compilation to proceed:
-#if (V8_TARGET_ARCH_ARM && !(V8_HOST_ARCH_IA32 || V8_HOST_ARCH_ARM))
+#if (V8_TARGET_ARCH_ARM && !(V8_HOST_ARCH_IA32 || V8_HOST_ARCH_ARM || V8_HOST_ARCH_X64))
Request
What is the intended/supported path for x64-host -> arm-target cross-builds in current Node/V8?
If this should be supported, could build generation be adjusted so host-side V8 tools/objects do not fail this guard (or guard logic updated in a supported way)?
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Tái hiện bản build x64-to-arm bằng các lệnh configure và make trong issue. Bắt đầu với deps/v8/include/v8config.h và out/tools/v8_gypfiles/v8_libplatform.host.mk được tạo ra, sau đó truy vết lý do các đối tượng host nhận macro đích ARM. Hoàn tất khi đường dẫn cross-build được hỗ trợ và guard cần thiết hoặc hành vi tạo build được ghi lại và xác minh.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- cpp, javascript, linux
- Lĩnh vực
- build-system, compilers, operating-systems
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 45/100