# Build StratoVirt from source

## 1. Check Rust environment

To build StratoVirt, make sure that Rust language environment and Cargo have already been installed.
 The recommended version of rustc is 1.45.2 or later.

```shell
$ rustc --version
rustc 1.45.2
```

If you want to deploy rust environment, the following link will help you:

<https://www.rust-lang.org/tools/install>

## 2. Build with glibc

With glibc, StratoVirt is linked dynamically. It's the default target to build StratoVirt.

```shell
# Add gnu rust tool-chain, if installed, skip
$ arch=`uname -m`
$ rustup target add ${arch}-unknown-linux-gnu

# Build StratoVirt
$ cargo build --release --target ${arch}-unknown-linux-gnu
```

Now you can find StratoVirt binary file in `target/${arch}-unknown-linux-gnu/release/stratovirt`.

## 3. Build with musl-libc

StratoVirt can also be built using musl-libc toolchains. By this way, StratoVirt is linked statically 
and has no library dependencies.

```shell
# Add musl rust tool-chain, if installed, skip
$ arch=`uname -m`
$ rustup target add ${arch}-unknown-linux-musl

# Build StratoVirt
$ cargo build --release --target ${arch}-unknown-linux-musl
```

Now you can find StratoVirt static binary file in `target/${arch}-unknown-linux-musl/release/stratovirt`.