首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不使用wasm-pack的情况下将Rust项目编译到Wasm?

如何在不使用wasm-pack的情况下将Rust项目编译到Wasm?
EN

Stack Overflow用户
提问于 2020-04-01 21:05:12
回答 1查看 2.9K关注 0票数 9

我希望将一个Rust程序/项目编译为Wasm,以便使用python-ext-wasm在我的Python应用程序中使用。现有的教程假设它是针对web的,并建议使用wasm-pack。没有JavaScript绑定的情况下,是否有另一种方法只编译Rust到Wasm?

例如,如果我有一个锈蚀程序(myproject/math.rs)。

代码语言:javascript
复制
#[no_mangle]
pub extern fn sum(x: i32, y: i32) -> i32 {
    x + y
}
  1. 如何在没有wasm的情况下将其转换为webpack文件
  2. 如何将整个项目(以及它的库依赖项)编译成Wasm?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-01 21:56:32

您可以直接用WebAssembly编译cargo build --target wasm32-unknown-unknown。这基本上就是其他工具(如wasm-packwasm-bindgen )所构建的,如果您不想这样做(例如,如果您没有针对JavaScript),您可以直接使用它编译成WebAssembly。

不过,也有一些警告:

  • WebAssembly模块与主机之间的所有通信都必须使用extern函数进行。这意味着可以使用的类型数量有限,主要是原始类型(整数、浮点数、布尔值和指针)。除非您在顶部使用额外的抽象层(这就是wasm-bindgen所做的),否则您将无法传递复杂的类型。
  • 标准库的大部分(例如文件系统和网络)不受wasm32-unknown-unknown目标的支持。如果您的WebAssembly主机支持WASI (WebAssembly系统接口),您可以使用wasm32-wasi目标来编译一个具有WASI支持的模块,该模块支持更多的标准库。
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60980310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档