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``: .. code-block:: c #include 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 `` 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 :doc:`../modules/mem` and :doc:`../modules/str` modules for memory and string utilities - See :doc:`../modules/net` for HTTP client/server and TCP sockets - Read the :doc:`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 ```` for everything, or individual headers like ```` for specific modules.