编译运行 webAssembly(wasm)

news/2024/9/18 22:01:28 标签: 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.niftyadmin.cn/n/5664594.html

相关文章

提高数据集成稳定性:EMQX Platform 端到端规则调试指南

自 5.7.0 版本起&#xff0c;EMQX 支持了 SQL 调试&#xff0c;并支持在数据集成全流程中进行规则调试&#xff0c;使用户能够在开发阶段就全面验证和优化规则&#xff0c;确保它们在生产环境中的稳定高效运行。 点击此处下载 EMQX 最新版本&#xff1a;https://www.emqx.com/z…

场外个股期权通道商是什么业务?个人投资者可以参与场外期权吗?

今天带你了解场外个股期权通道商是什么业务&#xff1f;个人投资者可以参与场外期权吗?场外个股期权通道商在个股期权市场中起着重要的中介作用&#xff0c;提供定制化的交易服务和风险管理解决方案。 场外个股期权通道商 场外个股期权通道商是一种金融机构&#xff0c;主要…

升级Ubuntu内核的几种方法

注意&#xff1a; Ubuntu主线内核由 Ubuntu 内核团队提供&#xff0c;用于测试和调试目的。 它们不受支持且不适合生产使用。 仅当它们可以解决当前内核遇到的关键问题时&#xff0c;才应该安装它们。 1、手动下载deb文件升级内核 来源&#xff1a;kernel.ubuntu.com/main…

vs2019成功连接数据库mysql

②在vs2019中创建新项目&#xff0c;注意x64 ③ 右击项目打开属性 ④添加include路径 ⑤添加lib路径 点击确定后点击应用 ⑥ 点击全部确定 ⑦ ⑧启动mysql 进入数据库&#xff1a; 在数据库中创建student的表 ⑨在va2019中输入下面代码测试 注意&#xff1a;密码换成自己…

对比VMware:深信服内存纠错能力怎么样?

云平台的稳定性&#xff0c;对于用户业务承载尤为重要。在VMware替代的过程中&#xff0c;不少用户也希望通过迁移替换&#xff0c;提升云平台的稳定性。为确保用户系统的持续运行&#xff0c;以及在发生故障时能够迅速且自动地恢复&#xff0c;深信服特别成立专业的技术团队&a…

Python青少年简明教程:Python算法学习入门

Python青少年简明教程&#xff1a;Python算法学习入门 学习算法不仅能提升你的技术能力&#xff0c;还能培养你的逻辑思维、创新能力和解决问题的技巧。无论是在学术研究、职业发展还是日常生活中&#xff0c;算法都是一个非常有价值的工具。 算法是解决问题的一系列明确步骤。…

Linux下的ADSP(TODO)

&#xff08;TODO&#xff09; 高通功耗问题分析手段_高通adsp不休眠-CSDN博客 高通的ADSP&#xff08;**Application Digital Signal Processor**&#xff0c;应用数字信号处理器&#xff09;是其骁龙平台中一个重要的组件&#xff0c;主要用于处理多媒体、音频、传感器数据和…

2023 hnust 湖科大 毕业实习 报告+实习鉴定表

2023 hnust 湖科大 毕业实习 报告实习鉴定表 岗位 IT公司机房运维 实习报告 实习鉴定表 常见疑问 hnust 湖科大 毕业实习常见问题30问&#xff08;2021 年7月&#xff0c;V0.9&#xff09;-CSDN博客时间&#xff1a;大四开学第三四周毕业实习23年是企业&#xff08;黑马&am…