This is the documentation for the latest (main) development branch of Zephyr. If you are looking for the documentation of previous releases, use the drop-down list at the bottom of the left panel and select the desired version.

Linkable loadable extensions “module” sample


This sample demonstrates the use of the Linkable Loadable Extensions (LLEXT) subsystem in Zephyr. The llext subsystem allows for the loading of relocatable ELF files at runtime; their symbols can be accessed and functions called.

Specifically, this shows how to call a simple “hello world” function, implemented in samples/subsys/llext/modules/src/hello_world_ext.c. This is achieved in two different ways, depending on the value of the Kconfig symbol CONFIG_HELLO_WORLD_MODE:


A board with a supported llext architecture and console. This can also be executed in QEMU emulation on the qemu_xtensa or qemu_cortex_r5 virtual boards.

Building and running

  • The following commands build and run the sample so that the files are linked together in the same binary:

    west build -b qemu_xtensa -T sample.llext.modules.builtin_build samples/subsys/llext/modules
    west build -t run
  • The following commands build and run the sample so that the extension code is compiled separately and included in the Zephyr image as a binary blob:

    west build -b qemu_xtensa -T sample.llext.modules.module_build samples/subsys/llext/modules
    west build -t run

    Take a look at samples/subsys/llext/modules/sample.yaml for the additional architecture-specific configurations required in this case.

To build for a different board, replace qemu_xtensa in the commands above with the desired board name.