3. Compiling Applications

Building a host and enclave application using the SDK is straight-forward. See Keystone-Demo as an example.

3.1. Toolchain

All compilation will need to be done using the riscv64- toolchain. This is provided by the riscv-gnu-toolchain submodule, and must be built first.

3.2. Libraries

Hosts and enclave applications will want to link against the edge library libkeystone-edge.a

Hosts will want to link against the host library libkeystone-host.a

Applications will want to link against the enclave app library libkeystone-app.a

3.3. Applications

Eapps need to be linked in a specific way. As this may change, please see the app.lds linker script in the sdk/tests directory to see the most up to date linking requirements.