为何使用cargo build编译Rust库无法生成.wasm文件?
解决Rust编译WASM无.wasm文件生成的问题
问题原因
默认情况下,Rust库(lib crate)的编译目标是Rust专用的静态库(.rlib),所以执行cargo build --target wasm32-unknown-unknown --release只会生成libhello_wasm.rlib,不会产出WASM模块。
解决步骤
修改Cargo.toml,添加crate-type配置,指定编译为C兼容的动态库(WASM模块属于这类):
[package] name = "hello-wasm" version = "0.1.0" edition = "2021" [lib] crate-type = ["cdylib", "rlib"] # 同时保留rlib供Rust项目引用,cdylib用于生成WASM [dependencies]
重新编译
执行原编译命令:
cargo build --target wasm32-unknown-unknown --release
此时查看target/wasm32-unknown-unknown/release/目录,会生成libhello_wasm.wasm文件,可手动重命名为hello-wasm.wasm。
额外说明
如果使用wasm-pack,它会自动处理crate类型配置,还能生成JS绑定、优化WASM体积,更适合Web环境使用。但如果仅需纯WASM文件,修改crate-type后用cargo编译即可满足需求。
内容的提问来源于stack exchange,提问作者boundless-forest
相关产品推荐
相关产品推荐

