
语言运行时嵌入式物联网【免费下载链接】wasm-micro-runtimeWebAssembly Micro Runtime (WAMR)项目地址https://gitcode.com/gh_mirrors/wa/wasm-micro-runtime点击查看免费下载本篇技术指南聚焦 WebAssembly Micro RuntimeWAMR在 Ubuntu 宿主机上的开发环境搭建涵盖基础编译依赖、CMake 工具链与 wasi-sdk 16.0 的完整安装步骤。读完本文你将能够从零准备一台可用于构建 WAMR vmcoreiwasm 可执行文件并编译、运行 WebAssembly 应用的 Linux 主机并通过实际构建与 hello world 程序验证环境就绪。一、环境概览为什么需要这些组件在动手安装之前先厘清 WAMR 宿主机环境的三个核心组成部分及其用途系统编译工具链WAMR 的 vmcore 与iwasm可执行文件由 C 语言编写需要通过build-essentialgcc/g/make 等、CMake 和 Ninja 等工具完成构建CMake较新版本WAMR 的构建系统基于 CMake 编写仓库内各平台的CMakeLists.txt与构建脚本如 product-mini/platforms/linux/CMakeLists.txt依赖较新的 CMake 特性因此需要使用 Kitware 官方 apt 源安装而非 Ubuntu 自带仓库中的旧版本wasi-sdk 16.0这是把 C/C 源码编译成 WebAssemblyWASI 目标的标准工具链。WAMR 的示例程序与测试用例例如 product-mini/app-samples/hello-world/main.c都需要借助它生成.wasm文件再由 iwasm 加载执行。按原文档描述完成上述安装后即可构建 WAMR 并运行 hello world 程序。下文按步骤逐步展开并提供仓库源码层面的佐证与扩展说明。二、Ubuntu 基础依赖包安装原文档给出的第一组命令用于安装 WAMR 构建所需的基础软件包apt-get update \ apt-get install -y apt-transport-https apt-utils build-essential \ ca-certificates curl g-multilib git gnupg \ libgcc-9-dev lib32gcc-9-dev lsb-release \ ninja-build ocaml ocamlbuild python2.7 \ software-properties-common tree tzdata \ unzip valgrind vim wget zip --no-install-recommends逐项拆解这份清单的用途build-essential提供 gcc/g/make 等核心编译工具是构建 iwasm 的基础g-multilib、libgcc-9-dev、lib32gcc-9-dev支持 32 位与 64 位混合编译。WAMR 支持X86_64与X86_32等目标架构多架构头文件与库是交叉编译的必要条件对应 WAMR 的WAMR_BUILD_TARGET配置项参见 doc/build_wamr.md 中Configure platform and architecture一节ninja-buildNinja 构建系统WAMR 的 CMake 生成器之一可加快增量编译cmake此命令未包含后续单独安装见第三节ocaml/ocamlbuild部分依赖组件如 LLVM 相关脚本在特定环境下需要valgrind内存调试工具doc/build_wamr.md 中专门给出了一组面向 Valgrind 的构建参数组合wget/curl下载 wasi-sdk 与 CMake 安装包git克隆仓库与获取子模块其余apt-transport-https、ca-certificates、gnupg、software-properties-common、lsb-release、tree、tzdata、unzip、zip、vim、apt-utils为通用系统工具与仓库源管理所需。版本提示原文档面向 Ubuntu 18.04libgcc-9-dev对应较老的工具链。仓库的 product-mini/README.md 给出了按系统版本区分的等价命令更贴近当前环境# Ubuntu-22.04 sudo apt install build-essential cmake g-multilib libgcc-11-dev lib32gcc-11-dev ccache # Ubuntu-20.04 sudo apt install build-essential cmake g-multilib libgcc-9-dev lib32gcc-9-dev ccache # Ubuntu-18.04 sudo apt install build-essential cmake g-multilib libgcc-8-dev lib32gcc-8-dev ccache # Fedora sudo dnf install glibc-devel.i686实际使用时请将libgcc-X-dev/lib32gcc-X-dev替换为与你发行版匹配的版本号22.04 对应libgcc-11-dev20.04 对应libgcc-9-dev18.04 对应libgcc-8-dev。三、安装新版 CMakeKitware 官方 apt 源Ubuntu 自带仓库中的 CMake 版本往往偏旧无法满足 WAMR 构建脚本的要求因此原文档采用 Kitware 官方源安装。整体思路是导入 Kitware 的签名密钥 → 添加 apt 软件源 → 通过 apt 安装。wget --progressdot:giga -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg /dev/null \ echo deb [signed-by/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic main | tee /etc/apt/sources.list.d/kitware.list /dev/null \ apt-get update \ rm /usr/share/keyrings/kitware-archive-keyring.gpg \ apt-get install -y kitware-archive-keyring --no-install-recommends \ apt-get install -y cmake --no-install-recommends命令说明下载 Kitware 官方 GPG 公钥gpg --dearmor转为二进制格式后写入/usr/share/keyrings/kitware-archive-keyring.gpg向/etc/apt/sources.list.d/kitware.list写入软件源定义示例基于 Ubuntu bionic 即 18.04其他版本请将bionic替换为对应代号如focal/jammyapt-get update刷新索引后先安装kitware-archive-keyring包它会接管密钥管理再安装cmake。安装完成后可通过cmake --version验证。WAMR 的构建入口——仓库根目录 CMakeLists.txt 与各平台的product-mini/platforms/*/CMakeLists.txt——都会在配置阶段检查 CMake 版本版本过旧会在cmake ..时直接报错这也是必须使用较新 CMake 的直接原因。四、安装 wasi-sdk 16.0WASI 编译工具链WASI SDK 是把 C 代码编译成 WASI 兼容的 wasm 模块的标准工具链。原文档将其安装到/opt下并通过软链接固定访问路径wget -c --progressdot:giga https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-16/wasi-sdk-16.0-linux.tar.gz -P /opt \ tar xf /opt/wasi-sdk-16.0-linux.tar.gz -C /opt \ ln -fs /opt/wasi-sdk-16.0 /opt/wasi-sdk \ rm /opt/wasi-sdk-16.0-linux.tar.gz命令要点wget -c支持断点续传-P /opt指定下载目录解压后得到/opt/wasi-sdk-16.0/目录其中包含bin/clang、bin/wasm-ld、bin/llvm-ar等工具ln -fs /opt/wasi-sdk-16.0 /opt/wasi-sdk建立软链接把/opt/wasi-sdk固定为工具链访问入口便于后续升级 SDK 版本时无需改动构建配置。为什么路径固定在/opt/wasi-sdk因为 WAMR 的 CMake 工具链文件默认就从这个路径查找工具链。查看 wamr-sdk/app/wasi_toolchain.cmakeif (NOT DEFINED WASI_SDK_DIR) SET (WASI_SDK_DIR /opt/wasi-sdk) endif () SET (CMAKE_C_COMPILER ${WASI_SDK_DIR}/bin/clang) SET (CMAKE_CXX_COMPILER ${WASI_SDK_DIR}/bin/clang) SET (CMAKE_LINKER ${WASI_SDK_DIR}/bin/wasm-ld CACHE INTERNAL ) SET (CMAKE_AR ${WASI_SDK_DIR}/bin/llvm-ar CACHE INTERNAL ) SET (CMAKE_NM ${WASI_SDK_DIR}/bin/llvm-nm CACHE INTERNAL ) SET (CMAKE_OBJDUMP ${WASI_SDK_DIR}/bin/llvm-dwarfdump CACHE INTERNAL ) SET (CMAKE_RANLIB ${WASI_SDK_DIR}/bin/llvm-ranlib CACHE INTERNAL )即当环境变量WASI_SDK_DIR未定义时默认值为/opt/wasi-sdk。这正是原文档建立软链接的原因——编译 wasm 应用时例如通过wamr-sdk/app/wamr_toolchain.cmake或wasi_toolchain.cmake指定工具链CMake 会自动使用/opt/wasi-sdk/bin/clang等工具完成编译。若你的 SDK 安装在其他位置需显式设置WASI_SDK_DIR环境变量该变量同样被 wamr-sdk/app/wamr_toolchain.cmake 校验未定义时会以WASI_SDK_DIR is not defined报错。五、验证环境就绪安装完成后建议按以下顺序做一次快速自检# 1. 编译器与构建工具 gcc --version cmake --version ninja --version # 2. wasi-sdk 工具链 ls -l /opt/wasi-sdk /opt/wasi-sdk/bin/clang --version # 3. 确认软链接有效 readlink -f /opt/wasi-sdk若上述命令均正常输出即可进入下一节完成 WAMR 的构建与 hello world 验证。六、构建 iwasm 并运行 hello world环境验证闭环环境准备是否真正可用最直接的检验方式是完成一次完整的构建 运行闭环。WAMR 仓库 gitbook/basics/getting-started/on_host.md 给出了与本节前置文档配套的完整流程。6.1 构建 iwasm vmcorecd ${WAMR-dir}/product-mini/platforms/${your platform} mkdir build cd build cmake .. make以 Linux 为例Ubuntu 对应linux平台目录 product-mini/platforms/linuxcd product-mini/platforms/linux/ mkdir build cd build cmake .. make # iwasm 生成于当前目录依据 product-mini/README.mdLinux 平台默认启用fast interpreter、AOT与Libc WASIJIT 默认关闭构建目标自动按主机位宽设为X86_64或X86_32。默认配置足以运行解释器模式下的 wasm 文件如需调整运行模式classic interpreter、AOT、LLVM JIT、Fast JIT、Multi-tier JIT可参考 doc/build_wamr.md 中的WAMR_BUILD_*配置项组合例如# 仅解释器经典模式 cmake .. -DWAMR_BUILD_INTERP1 -DWAMR_BUILD_FAST_INTERP0 # 关闭解释器、启用 AOT 与 WASI cmake .. -DWAMR_BUILD_INTERP0 -DWAMR_BUILD_AOT1 -DWAMR_BUILD_LIBC_WASI1 -DWAMR_BUILD_PLATFORMlinux6.2 编译并运行 hello world 程序cp iwasm ../../../app-samples/hello-world cd ${WAMR-dir}/product-mini/app-samples/hello-world ./build.sh其中./build.sh内部即通过上节安装的 wasi-sdk/opt/wasi-sdk把 C 源码编译为test.wasm。示例程序源码位于 product-mini/app-samples/hello-world/main.c其逻辑为打印Hello world!、malloc 一段堆内存并写入字符串后释放——覆盖了 WASI 环境下标准输出与堆内存两大核心能力。最后执行第一个 wasm 程序./iwasm test.wasm正常输出如下Hello world! buf ptr: 0x... buf: 1234看到Hello world!即说明宿主机环境、WAMR 构建链路与 wasi-sdk 工具链全部就绪。6.3 备选Docker 方式若不想逐项安装依赖仓库还提供了 Docker 一键构建方案详见 gitbook/basics/getting-started/on_docker.md 与 product-mini/README.md 的 Docker 一节cd ci ./build_wamr.sh ls ../build_out/Docker 方式会自动下载全部依赖并构建 WAMR Core生成libiwasm.so、libvmlib.a与iwasm可执行文件并拷贝至build_out适合希望规避平台相关依赖与兼容性问题的场景。七、其他平台环境准备说明MacOS / Windows原文档在 Ubuntu 之后以 TODO 形式预留了 MacOS 与 Windows 章节。结合仓库 product-mini/README.md这两个平台的依赖要点如下可作为环境准备参考MacOS需先从 App Store 安装 Xcode再安装 CMakeHomebrewbrew install cmake构建目录为product-mini/platforms/darwinWindows需确保 MSVC 与 CMake 已加入命令行环境构建目录为product-mini/platforms/windows产物为Release/iwasm.exe。注意上述仅为依赖级说明Windows 上WAMR_BUILD_LIBC_WASI不受支持可改用实验性的WAMR_BUILD_LIBC_UVWASI详见 doc/build_wamr.md 的 Configure LIBC 一节。八、常见问题与排查提示cmake ..报版本过低说明仍在使用系统旧版 CMake请确认 Kitware 源已正确添加并重新安装第三节wasm 应用编译时报WASI_SDK_DIR is not defined编译 wasm 应用时走wamr-sdk/app/wamr_toolchain.cmake路径必须显式导出WASI_SDK_DIR例如export WASI_SDK_DIR/opt/wasi-sdklibgcc-9-dev安装失败说明发行版版本与命令中的包版本不匹配请按第二节的版本对照表选用对应版本号valgrind 检查若需用 Valgrind 调试内存问题doc/build_wamr.md 建议额外加上-DCMAKE_BUILD_TYPEDebug -DWAMR_DISABLE_HW_BOUND_CHECK0 -DWAMR_DISABLE_WRITE_GS_BASE0配置。参考文档宿主机构建与 hello world 全流程gitbook/basics/getting-started/on_host.md、gitbook/basics/getting-started/on_docker.md各平台构建说明与依赖清单product-mini/README.mdWAMR vmcore 全部 CMake 编译选项doc/build_wamr.mdwasi-sdk 工具链默认路径定义wamr-sdk/app/wasi_toolchain.cmake、wamr-sdk/app/wamr_toolchain.cmakehello world 示例源码product-mini/app-samples/hello-world/main.c赞分享语言运行时嵌入式物联网【免费下载链接】wasm-micro-runtimeWebAssembly Micro Runtime (WAMR)项目地址https://gitcode.com/gh_mirrors/wa/wasm-micro-runtime点击查看免费下载相关推荐PeerTube 部署依赖安装全指南各主流发行版环境准备与版本自检机制解析PeerTube 部署依赖安装全指南各主流发行版环境准备与版本自检机制解析 PeerTube 是一套基于 Node.js/Express、PostgreSQL音视频视频后端前端从源码构建 NodeOS环境准备、依赖安装与 QEMU 启动全流程指南从源码构建 NodeOS环境准备、依赖安装与 QEMU 启动全流程指南 NodeOS 是一个以 Node.js 作为用户态的轻量级操作系统本文基于仓库内 d操作系统嵌入式GPT Academic 本地安装与启动全流程环境准备、依赖安装与源码级验证GPT Academic 本地安装与启动全流程环境准备、依赖安装与源码级验证 本篇指南以 GPT AcademicLLM 大语言模型的实用化交互界面的官方人工智能大模型AI 应用交互助手上一篇Refly v0.2.2 版本深度解析Plus 订阅计划、国际化文档站与核心稳定性修复下一篇Hyperf 注解完全指南从基础概念到自定义注解与 ClassMap 类映射创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考