.. _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. * **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. Once the application has been defined, it can be built with a single command. The results of the build process are located in a sub-directory called :file:`outdir/BOARD`. This directory contains the files generated by the build process, the most notable of which are listed below. * The :file:`.config` file that contains the configuration settings used to build the application. * The various object files (:file:`.o` files and :file:`.a` files) containing custom-built kernel and application-specific code. * The :file:`zephyr.elf` file that contains the final application image.