Getting Started
Build and run your first UEFI application with the AXL SDK. No EDK2 source tree needed – just a C compiler and a linker.
Prerequisites
clang (14+) or GCC (cross-compiler for your target)
lld-link (LLVM linker, ships with clang)
QEMU + OVMF for testing (optional but recommended)
On Fedora/RHEL:
dnf install clang lld qemu-system-x86 edk2-ovmf
On Ubuntu/Debian:
apt install clang lld qemu-system-x86 ovmf
Install the SDK
Clone and build the SDK:
git clone https://github.com/aximcode/axl-sdk.git
cd axl-sdk
./scripts/install.sh --arch x64
This builds libaxl.a, packages headers, and installs the
axl-cc compiler wrapper to out/bin/axl-cc. Add it to your
PATH:
export PATH="$PWD/out/bin:$PATH"
Write a Hello World
Create hello.c:
#include <axl.h>
int main(int argc, char **argv) {
axl_printf("Hello from UEFI!\n");
return 0;
}
Standard C entry point. No UEFI types, no wide strings, no
EFI_STATUS. Just #include <axl.h> and write C.
Build
axl-cc hello.c -o hello.efi
That’s it – one command, 11KB binary, zero external dependencies.
Run in QEMU
The run-qemu.sh script creates a FAT32 disk image, copies your
EFI binary, and boots QEMU with OVMF:
./scripts/run-qemu.sh hello.efi
You should see Hello from UEFI! on the QEMU console.
Next Steps
Browse the AxlMem – Memory Allocation and AxlStr – String Utilities modules for memory and string utilities
See AxlNet – Networking for HTTP client/server and TCP sockets
Read the Library Design document for architecture overview
Explore
sdk/examples/for more examples (JSON, collections, HTTP fetch, drivers)
All API documentation is generated from header comments. Include
<axl.h> for everything, or individual headers like
<axl/axl-json.h> for specific modules.