生锈,WebAssembly和传递参数以增加总内存

我有一个生锈的项目,我正在编译为每 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 举报,一经查实,本站将立刻删除。

相关推荐


什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据复制操作的两种方式。‌在聊深浅拷贝之前咱得了解一下js中的两种数据类型:
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:重建二叉树、反向输出链表每个节点 题目 重建二叉树: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列 {1,2,4,7,3,5,6,8} 和中序遍历序列 {
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须了解的知识点,现在迎来了ES6+的时代,因为箭头函数的出现,所以感觉有必要对 this 问题梳理一下,所以刚好总结一下JavaScript中this指向的问题。
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)