You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在wasm32-unknown-unknown目标下用wasm-bindgen将Rust与C/C++编译链接至同一WASM二进制

Rust WASM 与 C 交互的 ABI 兼容性问题及当前进展

背景

  • wasm32-unknown-emscripten 属于遗留编译目标,仅由一位兼职开发者维护,但过去它是唯一能同时编译并链接Rust和C库的目标。
  • Rust+WASM社区已广泛转向 wasm32-unknown-unknown 目标,该目标与 wasm-bindgen 项目深度协作,生态中大量核心组件(包括winit、wgpu)都基于此构建,拥有完善的支持体系和文档。

核心问题

此前Rust编译器为 wasm32-unknown-unknown 生成的C ABI,与clang遵循规范的C ABI不兼容,这直接导致依赖Rust编译器的wasm-bindgen生成的WASM二进制,无法和合规C编译器产出的二进制完成链接。

当前生态现状与解决进展

该兼容性问题已取得关键突破:

  • 2024年4月,Rust编译器团队在nightly版本中引入了一个临时不稳定的标志 --wasm_c_abi,启用后编译器会为WASM目标生成符合规范的C ABI。这个标志是过渡性的,未来会被移除,届时编译器将默认生成合规C ABI。
  • wasm-bindgen 从0.2.88版本开始,已经完全支持这种合规C ABI。

内容的提问来源于stack exchange,提问作者Rafael Beckel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 02:40:04