LUFA Library  140928
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Compiling the Demos, Bootloaders and Projects

The following details how to compile the included LUFA demos, applications and bootloaders using AVR-GCC.


Before you can compile any of the LUFA library code or demos, you will need a recent distribution of avr-libc (1.6.2+) and the AVR-GCC (4.2+) compiler. A standard "coreutils" package for your system is also required for command line compilation of LUFA based applications.

Windows Prerequisites

On Windows, you will need a copy of the latest Atmel Toolchain (, either downloaded and installed as a standalone package, or installed as part of Atmel Studio. You will need to ensure that the "bin" directory of the toolchain is available in your system's PATH environment variable.

In addition, you will need to install a ported version of the ZSH or BASH *nix shells, and a standard set of *nix utilities such as cut, find and sed. These can be found in the "basic" system package of the of the MinGW installer ( Once installed, add the "msys\1.0\bin" of the MinGW installation folder is added to your system's PATH environment variable.

Linux Prerequisites

On Linux systems you will need to install the latest Linux distribution of the standalone Atmel Toolchain from the Atmel website (, or use the latest avr-libc and avr-gcc packages for your chosen distribution's package manager. For full device support, the Atmel standalone Toolchain package is recommended.

Compiling a LUFA Application

Compiling the LUFA demos, applications and/or bootloaders is very simple. LUFA comes with makefile scripts for each individual demo, bootloader and project folder, as well as scripts in the Demos/, Bootloaders/, Projects/ and the LUFA root directory. Compilation of projects can be started from any of the above directories, with a build started from an upper directory in the directory structure executing build of all child directories under it. This means that while a build inside a particular demo directory will build only that particular demo, a build started from the /Demos/ directory will build all LUFA demo projects sequentially.

To build a project from the source via the command line, the command "make all" should be executed from the command line in the directory of interest. To remove compiled files (including the binary output, all intermediately files and all diagnostic output files), execute "make clean". Once a "make all" has been run and no errors were encountered, the resulting binary will be located in the generated ".HEX" file. If your project makes use of pre-initialized EEPROM variables, the generated ".EEP" file will contain the project's EEPROM data.

See also
The LUFA Build System for information on the LUFA build system.