编译运行 webAssembly(wasm)

news2024/12/25 1:12:27

环境准备:

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.coloradmin.cn/o/2134700.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android Studio 新生成key store 打包apk报 Invalid keystore format

Android Studio 新生成key store 打包apk报错 Execution failed for task :app:packageDebug. > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade > com.android.ide.common.signing.KeytoolException: Failed …

充电宝什么品牌比较好用?2024年最值得推荐充电宝品牌!

近年来&#xff0c;随着电子设备使用需求的增加&#xff0c;充电宝市场呈现出蓬勃发展的态势。优秀的充电宝产品不仅能够提供稳定的充电速度&#xff0c;还具备方便携带的体验&#xff0c;深受用户喜爱。然而&#xff0c;面对市场上众多品牌和型号的选择&#xff0c;如何找到最…

C++库std::clamp

C库std::clamp std::clamp: 轻松掌握值的范围限制 目录 1. 引言2. std::clamp 基本概念2.1 函数签名2.2 参数说明2.3 返回值 3. 基本用法4. 深入理解 std::clamp4.1 实现原理4.2 注意事项 5. 高级用法5.1 自定义比较函数5.2 与 lambda 表达式结合 6. 实际应用场景6.1 图形编程…

全球安防监控、工业检测摄像机市场规模情况一览

一、全球安防监控市场规模情况综合分析 &#xff08;1&#xff09;全球安防监控摄像机市场规模 全球市场研究公司Research Nester统计&#xff0c;2023年全球安防监控摄像机市场规模为811.1亿元&#xff0c;预测到2028年&#xff0c;全球安全与监控市场规模预计将达到1869.3亿…

将 Parallels Desktop(PD虚拟机)安装在移动硬盘上,有影响吗?

当我们谈论在移动硬盘上安装 Parallels Desktop&#xff08;简称PD虚拟机&#xff09;及其对性能的影响时&#xff0c;特别是在运行如Unigraphics这样的资源密集型软件时&#xff0c;用户需要在便携性与性能之间找到最佳平衡。本文将深入探讨PD虚拟机装在移动硬盘有影响吗&…

(javaweb)mysql---DDL

一.数据模型&#xff0c;数据库操作 1.二维表&#xff1a;有行有列 2. 3.客户端连接数据库&#xff0c;发送sql语句给DBMS&#xff08;数据库管理系统&#xff09;&#xff0c;DBMS创建--以文件夹显示 二.表结构操作--创建 database和schema含义一样。 这样就显示出了之前的内容…

类和对象(中)【上篇】(构造,析构,拷贝函数)

&#x1f31f;个人主页&#xff1a;落叶 目录 类的默认成员函数 构造函数 无参构造 带参构造函数 全缺省构造函数 析构函数 对⽐C和C解决括号匹配问题 C语言版的Stack C版的Stack 拷⻉构造函数 类的默认成员函数 默认成员函数就是⽤⼾没有显式实现&#xff0c;编译器会…

如何查看微信聊天记录,防员工私单(有效监管员工电脑微信聊天的方法)

在企业管理中&#xff0c;防止员工私单&#xff08;即员工绕过公司直接与客户交易&#xff09;是管理中的一大难题。 许多员工使用微信进行日常工作沟通&#xff0c;而如果管理不到位&#xff0c;容易产生私单问题&#xff0c;影响企业的利益。 为了解决这一问题&#xff0c;…

【自费2W真机测评】三款热门/旗舰宠物空气净化器米家、希喂、352对比试用!

我家老大是三个月大的时候接回来的&#xff0c;接回来前就是家教好的小猫咪一只&#xff0c;不乱尿、不掉毛的。看朋友家都被猫咪掉毛困扰着&#xff0c;我还嘚瑟觉得自己养可好了&#xff0c;根本不掉毛。养了三个月老大长成大猫猫了&#xff0c;我又觉得我可以了&#xff0c;…

浏览器插件快速开启/关闭IDM接管下载

假设你已经为浏览器安装了IDM扩展&#xff0c;那么按下图的点击顺序&#xff0c;可以快速开启或关闭IDM的下载接管&#xff0c;而不必在IDM软件的设置->选项中&#xff0c;临时作调整。

再次进阶 舞台王者 第八季完美童模全球赛代言人【孟梓娴】赛场+秀场超燃合集!

7月20-23日&#xff0c;2024第八季完美童模全球总决赛在青岛圆满落幕。在盛大的颁奖典礼上&#xff0c;一位才能出众的少女——孟梓娴迎来了她舞台生涯的璀璨时刻。 代言人——孟梓娴&#xff0c;以璀璨童星之姿&#xff0c;优雅地踏上完美童模盛宴的绚丽舞台&#xff0c;作为开…

Qt-QLabel显示类控件(25)

目录 描述 相关属性介绍 使用 纯文本、富文本、markdown 显示图片 实时修改图片尺寸 文本对齐 Box框 水平 垂直对其 其他的文本对齐 设置伙伴 描述 用来显示文本的&#xff0c;如果看了之前的&#xff0c;那么对这个控件应该不陌生&#xff0c;这里我们就详细介绍…

初步了解python数据分析

首先输入 pip install pandas 安装pandas&#xff0c;安装完成如下&#xff0c; 一个示例&#xff0c; import pandas as pddata {A: [11, 22, 33, 44, 55], B: [51, 4, 33, 2, 1]} df1 pd.DataFrame(data)matrix1 df1.corr() print(matrix1) 输出如下&#xff0c; Pandas …

ppt怎么做的好看?这些技巧让你的演示更上一层楼

当中秋佳节来临&#xff0c;准备一场生动有趣的中秋节科普活动时&#xff0c;一套精美的PPT模板无疑是点睛之笔。它不仅能让你的科普内容更加引人入胜&#xff0c;还能在视觉上给观众留下深刻印象。 为了帮助你快速打造出这样一份PPT&#xff0c;以下是几款优质的ppt模板免费软…

代码管理工具——git及阿里云云效的使用(包含git的使用及云效自动化部署)

1、做项目开发时都会用到代码管理工具,像是我之前使用过gitHub,Visual Studio等一些代码管理工具&#xff0c;这里介绍的是阿里云云效的使用。 2、首先登录阿里云云效&#xff0c;登录进去之后会看到公司给你开放的一个仓库。 3、进入仓库&#xff0c;点击克隆/下载&#xff0…

搜索软件 Everything 的安装与使用教程

一、Everything简介 适用于 Windows 的免费搜索工具 Everything 是 Windows 的即时搜索引擎。发现、整理并轻松访问文件和文件夹&#xff0c;一切尽在指尖&#xff01; PS&#xff1a;Everything无法对文件内容进行搜索&#xff0c;只能根据文件名和路径进行搜索 二、Everyt…

ollama语言大模型部署使用

ollama语言大模型部署使用 前言一、下载安装maxkb1、下载解压赋权2、安装 二、安装ollamadocker运行 三、无需获取api_keymaxkb安装ollama模型对&#xff0c;就是这&#xff0c;你选好基础模型后&#xff0c;只需要给他地址&#xff0c;添加完成后自行调用ollama安装你选择好的…

GD - GDLink的接口引脚杜邦线接触不好,还是自己做一个转接头好些

文章目录 GD - GDLink的接口引脚杜邦线接触不好&#xff0c;还是自己做一个转接头好些概述笔记转接头使用时的连接关系转接头弄个壳子好些在转接头上&#xff0c;将线序转为自己板子SWD的防呆线序 转接头的2x5P线序和看到的GD-LINK2x5P接口相反END GD - GDLink的接口引脚杜邦线…

37拼购:电商新风尚,共享双赢的购物革命

随着2024年电商市场的日益繁荣&#xff0c;商品海洋中的同质化问题愈发严峻&#xff0c;消费者在茫茫商海中寻觅独特价值的难度陡增。在此背景下&#xff0c;一种名为“37悦享拼”的创新电商模式横空出世&#xff0c;它巧妙融合了私域社交与电商精髓&#xff0c;旨在打破传统壁…

Java wrapperr打包springboot项目到linux和Windows

Java wrapper打包springboot项目到linux和Windows 1 Java wrapper 说明2 linux的安装步骤2.1 解压 创建目录2.2 复制文件2.3 配置文件2.4 启动 3 windows3.1 配置文件3.2 复制文件3.3 启动 1 Java wrapper 说明 前提&#xff1a; 一定要有Java环境&#xff08;我使用的是jdk1.8…