Please follow the instructions below to build the WAMR core on different platforms.
First of all please install library dependencies of lib gcc. Use installation commands below for Ubuntu Linux:
sudo apt install lib32gcc-5-dev g++-multilib
Or in Fedora:
sudo dnf install glibc-devel.i686
After installing dependencies, build the source code:
cd core/iwasm/products/linux/
mkdir build
cd build
cmake ..
make
Note: The WASI feature is enabled by default, if we want to disable it, please run:
cmake .. -DWASM_ENALBE_WASI=0
First of all please install library dependencies of lib gcc. Use installation commands below for Ubuntu Linux:
sudo apt install lib32gcc-5-dev g++-multilib
Or in Fedora:
sudo dnf install glibc-devel.i686
And then install the Intel SGX SDK.
After installing dependencies, build the source code:
source <SGX_SDK dir>/environment
cd core/iwasm/products/linux-sgx/
mkdir build
cd build
cmake ..
make
This builds the libraries used by SGX enclave sample, the generated file libvmlib.a and libextlib.a will be copied to enclave-sample folder.
Then build the enclave sample:
source <SGX_SDK dir>/environment
cd enclave-sample
make
The binary file app will be generated.
To run the sample:
source <SGX_SDK dir>/environment
./app
Make sure to install Xcode from App Store firstly, and install cmake.
If you use Homebrew, install cmake from the command line:
brew install cmake
Then build the source codes:
cd core/iwasm/products/darwin/
mkdir build
cd build
cmake ..
make
VxWorks 7 SR0620 release is validated.
First you need to build a VSB. Make sure UTILS_UNIX layer is added in the VSB. After the VSB is built, export the VxWorks toolchain path by:
export <vsb_dir_path>/host/vx-compiler/bin:$PATH
Now switch to iwasm source tree to build the source code:
cd core/iwasm/products/vxworks/
mkdir build
cd build
cmake ..
make
Create a VIP based on the VSB. Make sure the following components are added:
- INCLUDE_POSIX_PTHREADS
- INCLUDE_POSIX_PTHREAD_SCHEDULER
- INCLUDE_SHARED_DATA
- INCLUDE_SHL
Copy the generated iwasm executable, the test WASM binary as well as the needed shared libraries (libc.so.1, libllvm.so.1 or libgnu.so.1 depending on the VSB, libunix.so.1) to a supported file system (eg: romfs).
On Linux, WASI is enabled by default. To build iwasm without wasi support, pass an option when you run cmake:
cmake .. -DWASM_ENABLE_WASI=0
make
You need to download the Zephyr source code first and embed WAMR into it.
git clone https://github.com/zephyrproject-rtos/zephyr.git
cd zephyr/samples/
cp -a <iwasm_dir>/products/zephyr/simple .
cd simple
ln -s <iwam_dir> iwasm
ln -s <shared_lib_dir> shared-lib
mkdir build && cd build
source ../../../zephyr-env.sh
cmake -GNinja -DBOARD=qemu_x86 ..
ninja
- a developerkit board id needed for testing
- download the AliOS-Things code
git clone https://github.com/alibaba/AliOS-Things.git
- copy <iwasm_root_dir>/products/alios-things directory to AliOS-Things/middleware, and rename it as iwasm
cp -a <iwasm_root_dir>/products/alios-things middleware/iwasm
- create a link to <iwasm_root_dir> in middleware/iwasm/ and rename it to iwasm
ln -s <iwasm_root_dir> middleware/iwasm/iwasm
- create a link to <shared-lib_root_dir> in middleware/iwasm/ and rename it to shared-lib
ln -s <shared-lib_root_dir> middle/iwasm/shared-lib
- modify file app/example/helloworld/helloworld.c, patch as:
#include <stdbool.h> #include <aos/kernel.h> extern bool iwasm_init(); int application_start(int argc, char *argv[]) { int count = 0; iwasm_init(); ... }
- modify file app/example/helloworld/aos.mk
$(NAME)_COMPONENTS := osal_aos iwasm
- build source code
aos make helloworld@developerkit -c config aos make
- download the binary to developerkit board, check the output from serial port
Docker will download all the dependencies and build WAMR Core on your behalf.
Make sure you have Docker installed on your machine: macOS, Windows or Linux.
Build the Docker image:
docker build --rm -f "Dockerfile" -t wamr:latest .
Run the image in interactive mode:
docker run --rm -it wamr:latest
You'll now enter the container at /root
.