从Rust为机器类型wasm32构建LLVM

问题描述 投票:1回答:1

我正在尝试建立一个业余项目,在其中我将一个Rust文件构建到WebAssembly。我想传递更多选项来脚本化,然后Rustc和货物似乎允许我使用(例如MINIMAL_RUNTIME,ENVIRONMENT和INVOKE_RUN)。

我有'精辟的想法,将Rust编译为llvm,然后将该llvm文件提供给脚本,以便我可以使用编译器选项。但是,当我尝试构建WebAssembly时,出现错误“机器类型必须为wasm32”。

这是我要构建的文件:

fn main() {
    println!("Hello World!");
}

这就是我试图构建的方式:

rustc --emit=llvm-ir test.rs
emcc test.ll -O0 -s WASM=1

知道我在做什么错吗? (或者我可以实现目标的另一种方式?)

rust llvm emscripten
1个回答
0
投票

啊,我需要添加一个目标选项:

rustc --emit=llvm-ir --target wasm32-unknown-unknown test.rs
emcc test.ll -O0 -s WASM=1 -s ERROR_ON_UNDEFINED_SYMBOLS=0

当然,这使我现在出现“未知符号”错误...-叹气-

编辑:实际上,我应该做的是在rustc上使用-C标志将参数直接传递给emcc,这是我首先要做的:

rustc --target wasm32-unknown-unknown -C link-arg="-s MINIMAL_RUNTIME=1" -C link-arg="-s INVOKE_RUN=0" test.rs
© www.soinside.com 2019 - 2024. All rights reserved.