应用开发及编译

业务应用开发过程

1、 添加头文件:#include "wd_edge_x.h"添加头文件之后,就可以调用我们提供的open-api

2、编写业务代码

编译过程

1、编译,编译需要使用wasi-sdk提供的编译工具Wasi-sdk仓库地址: https://github.com/WebAssembly/wasi-sdk注:wasi-sdk是用来编译wasm应用程序的,可以直接在https://github.com/WebAssembly/wasi-sdk/releases 下载可用的wasi-sdk

2、编译过程还会用到wamr-sdk,地址:https://github.com/bytecodealliance/wasm-micro-runtime/tree/main/wamr-sdk

3、编写CMakeLists.txt, 示例:

# Copyright (C) 2019 Intel Corporation.  All rights reserved.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

cmake_minimum_required(VERSION 3.0)
project(wasm-app)

set (WAMR_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/..)

if (APPLE)
    set (HAVE_FLAG_SEARCH_PATHS_FIRST 0)
    set (CMAKE_C_LINK_FLAGS "")
    set (CMAKE_CXX_LINK_FLAGS "")
endif ()

set (CMAKE_SYSTEM_PROCESSOR wasm32)
set (CMAKE_SYSROOT                  ${WAMR_ROOT_DIR}/wamr-sdk/app/libc-builtin-sysroot)

if (NOT DEFINED WASI_SDK_DIR)
    set (WASI_SDK_DIR               "../../wasi-sdk-20.0")
endif ()

set (CMAKE_C_FLAGS                  "-nostdlib")
set (CMAKE_C_COMPILER_TARGET        "wasm32")
set (CMAKE_C_COMPILER               "${WASI_SDK_DIR}/bin/clang")

set (CMAKE_EXE_LINKER_FLAGS
    "-Wl,--max-memory=131072 -z stack-size=8192   \
     -Wl,--no-entry,--strip-all                   \
     -Wl,--export=__main_argc_argv                \
     -Wl,--export=__heap_base,--export=__data_end \
     -Wl,--allow-undefined"
)

add_executable(demo1.wasm main.c)
target_link_libraries(demo1.wasm)

4、编译打包脚本:打包脚本:build_and_pack.sh

所有的业务代码及编译需要的工具全部放在/root/projects/wasm-micro-runtime/demo

因为可能有多个业务应用demo,为了互不干扰,分别放在了demo1、demo2等文件夹下。

Wasm开发环境

Ubuntu x86_64:

地址:172.16.30.101 root/wdroot

路径:/root/projects/wasm-micro-runtime/demo

app路径: /root/projects/wasm-micro-runtime/demo/demo1/build/wasm-app

App build方式

Build app产物: build/wasm-app/demo1.wasm

编译的产出物的文件名是在CMakeLists.txt 最后两行指定的

最后更新于