.. _apps_overview: Application Overview #################### A Zephyr application is a collection of user-supplied files that can be built into an application image that executes on a board. Each application resides in a distinct directory created by the developer. The directory has the following structure. * **Application source code files**: An application typically provides one or more application-specific files, written in C or assembly language. These files are usually located in a sub-directory called :file:`src`. * **Kernel configuration files**: An application typically provides a configuration file (:file:`.conf`) that specifies values for one or more kernel configuration options. If omitted, the application's existing kernel configuration option values are used; if no existing values are provided, the kernel's default configuration values are used. * **MDEF file**: A microkernel application typically provides a Microkernel DEFinitions file (:file:`.mdef`) that defines the public kernel objects used by the application and the kernel. If omitted, no public kernel objects are defined. This file is not used with a nanokernel-only application. * **Makefile**: This file typically contains a handful of lines that tell the build system where to find the files mentioned above, as well as the desired target board configuration and kernel type (either microkernel or nanokernel). Once the application has been defined, it can be built with a single command. The results of the build process, including the final application image, are located in a sub-directory called :file:`outdir`.