Building Arduino

Stein Somers edited this page Dec 13, 2016 · 22 revisions

Steps for First Time Setup

1. Install Development Tools


On Windows, you'll need Cygwin, a Java JDK, and ant.

Cygwin is downloadable from or specifically: (32bit windows) or (64bit windows) or (if the cygwin official site is not ok for us!)

In the Cygwin setup configuration select the packages:

  • git - used for version control
  • make, gcc-mingw, and g++ - used to build arduino.exe (this will also pull in gcc-core)
  • perl - use this version, activestate or other distros have trouble
  • unzip, zip - for dealing with archives

Included in the defaults, but make sure:

  • coreutils (or textutils), gzip, tar Not required but useful:
  • openssh - command line ssh client
  • nano - handy/simple text editor

And be sure to leave the option selected for 'unix line endings'

Download and install ant. Add the apache-ant-xxx\bin directory to your path.

Download and install a Java JDK.

Point the JAVA_HOME environment variable to the JDK root directory. An error message that reads "Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar" means you need to set JAVA_HOME to your JDK (not JRE) installation.

When building on a 64 bit version of Windows, you must still use the 32 bit JDK. If you have both the 32 and 64 bit JDK's installed, ensure JAVA_HOME is set to the 32 bit version.

Mac OS X

On Mac OS X (using Homebrew, first brew update), install:

  • Apple's Developer Tools
  • git (brew install git)
  • JDK 8
brew tap caskroom/cask
brew cask install java
  • ant (brew install ant)


On Linux, you need the Sun Java SDK, avr-gcc, avr-g++, avr-libc, make, ant, and git.

# Ubuntu/Debian
sudo apt-get install git make gcc ant openjdk-8-jdk

# Arch Linux
sudo pacman -S jdk8-openjdk jre8-openjdk apache-ant git base-devel

if your linux version is ubuntu 14.04 and later, you can use the above command line if your one is not, you cannot use the above cmd, then you can use the info

2. Build from Source

this grabs the code from GitHub as an anonymous user.

Make sure your git line ending setting autocrlf is set to input or false. With true building will fail. You can see/change this setting with:

git config --global --edit
        name = xxx
        email =
        autocrlf = input
        default = current

# grab the code, it'll take a while (maybe even a long while for you dialup and international folks)
git clone

Build It

Use the command line.

cd /path/to/arduino/build
ant dist

This will prompt you to enter a version number (the JDK version to use). Enter 1.6.6 to start the build.

# if everything went well, you'll have no errors. (feel free to make
# suggestions for things to include here for common problems)
# then to run it. (ant run will call build and start)

ant run

# each time you make a change, use ant to build the thing
# and run to get it up and running.
Updating to the Latest Version
Each time you want to update to latest version from git:

cd /path/to/arduino
git pull

If new folders have been added, or you're getting odd errors, use:
ant clean

The best way to use it is to just make a clean build every time:

ant clean build start

If you want to debug the avr core you can put a symlink from your sketchbook to your git folder. This way you can directly commit the changes without copying back and forth.

ln -s ~/Documents/Arduino/Arduino/hardware/arduino/avr/ ~/Documents/Arduino/sketchbook/hardware/arduino/avr

Build for other platforms

You can do the build for other platforms using:

ant clean dist -Dplatform=windows

ant clean dist -Dplatform=macosx

ant clean dist -Dplatform=macosx-java-latest