3. Compiling Applications

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

3.1. Toolchain

All compilation will need to be done using the riscv64- toolchain.

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 may be a standard unmodified statically linked binary. This requires most options for the eyrie runtime to be enabled.

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