我有一个生锈的项目,我正在编译为每
http://asquera.de/blog/2017-04-10/the-path-to-rust-on-the-web/ webasm
项目编译.当我在Chrome Canary中运行它时,内存不足并给我一个非常有用的错误消息:
abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value 16777216,(2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime,...
问题是,它不清楚如何将这些标志传递给rustc /构建工具链.
既没有设置emmAKEN_CFLAGS,也没有设置以下工作:
cargo rustc -v --target=wasm32-unkNown-emscripten --release -- -Clink-args="-s TOTAL_MEMORY=33554432"
解决方法
This博文提供了一个我认为可以在你的案例中应用的解决方案:
As best as I can tell there is no way to pass most linker arguments through cargo. Instead,hack around the limitation by specifying a custom linker that is actually a shell script wrapping the real linker.
创建一个像emcc_link这样的shell脚本,它使用适当的选项调用emscripten:
emcc "-s" "TOTAL_MEMORY=33554432" $@
(您可能需要其他选项才能使其正常工作.有关详细信息,请查看blog post.)
并通过编辑/创建.cargo/config
指定将其用于您的项目:
[target.wasm32-unkNown-emscripten] linker = "/your/project/dir/emcc_sdl" [target.asmjs-unkNown-emscripten] linker = "/your/project/dir/emcc_sdl"
我无情地假设构建环境是Linux等.在Windows上,shell脚本可能应该是批处理脚本,我不确定.cargo / config是否存在任何差异.
免责声明:我没有尝试过这些.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。