当前位置: 首页 > news >正文

编译运行 webAssembly(wasm)

环境准备:

lunix下docker

参考https://hub.docker.com/r/emscripten/emsdk

拉编译环境

docker pull emscripten/emsdk 

编译

随便找个目录,敲下面命令,编译一个webAssembly 程序

# create helloworld.cpp
cat << EOF > helloworld.cpp
#include <iostream>
int main() {std::cout << "Hello World!" << std::endl;return 0;
}
EOF# compile with docker image
docker run \--rm \-v $(pwd):/src \trzeci/emscripten \emcc helloworld.cpp -o helloworld.js

 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JS和C互相操作</title>
</head>
<body><script>Module = {};Module.onRuntimeInitialized = function (){console.log(Module._show_me_your_name());console.log(Module._add(1,2)) }</script><script src="./helloworld.js"></script>
</body>
</html>

上述的html文件对应下面这个cpp

EM_PORT_API(int) show_me_your_name() {return 789;
}EM_PORT_API(float) add(float a,float b){return a + b;
}

同样的编译方式,试一下

上述是最简单的demo,js环境跟wasm的交互,只有number是直通的,如果是字符串需要做其他的转化处理,以后再说

其他:

docker pull镜像的时候可能会出错,docker配置代理的方式

进 /etc/docker/daemon.json配置

{"registry-mirrors": ["https://registry.hub.docker.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"],"proxies": {"http-proxy": "http://xxx:8118","https-proxy": "http://xxx:8118","no-proxy": "localhost"}
}

重启服务

systemctl daemon-reload
systemctl restart docker

xxx这些自行根据实际情况替换

参考:

https://www.wenjiangs.com/doc/afky6syw

墨滴社区

Download and install — Emscripten 3.1.66-git (dev) documentation

http://www.lryc.cn/news/439222.html

相关文章:

  • Linux bash 关联数组
  • 选择排序
  • SQL数据库(MySQL)
  • 在MindSearch中使用SiliconCloud:全面指南**
  • C++(2)之Linux多线程服务端编程总结
  • 【AI视频】复刻抖音爆款AI数字人作品初体验
  • Mysql 面试题总结
  • stack - queue
  • 微软九月补丁星期二发现了 79 个漏洞
  • 研1日记12
  • Rocky Linux 9安装mysqlclient库报错的解决方法
  • Spring Boot母婴商城:安全、便捷、高效
  • php实现kafka
  • YOLOv10改进系列,YOLOv10损失函数更换为Powerful-IoU(2024年最新IOU),助力高效涨点
  • 工具知识 | Linux 常用命令参考手册
  • mysql 常用知识点总结
  • conda常用指令
  • 前后端分离项目--下载功能
  • PMP--一模--解题--81-90
  • 计算机网络 --- 【2】计算机网络的组成、功能
  • 『功能项目』切换职业技能面板【49】
  • 寻找排名好的自闭症学校?这些关键因素不可忽视
  • Git常用命令(记录)
  • STM32+ESP8266 WiFi连接机智云平台APP远程控制教程
  • 学懂C++(六十):C++ 11、C++ 14、C++ 17、C++ 20新特性大总结(万字详解大全)
  • 杭电1008电梯
  • 【Python小知识 - 2】:在VSCode中切换Python解释器版本
  • ubuntu meson安装
  • 记者协会评审系统-需求分析
  • python 检索与该查询最相似的句子 使用库hflayers和sentence_transformers来实现遇到的问题