.. _application_fundamentals: Application Fundamentals ######################## A Zephyr application is defined by creating a directory containing the following files. * **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. A microkernel application typically provides an additional :abbr:`Microkernel Definitions File (MDEF)` under the extension :file:`.mdef`. This file defines all of the system's public microkernel objects. 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`. For additional information see: * :ref:`application`