Building Arduino

Steven Conaway edited this page Jul 27, 2018 · 35 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: (32-bit windows) or (64-bit 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 tap caskroom/versions
    brew cask install java8
  • if you also have JDK 9 or 10 installed, you will need to select JDK 8 with (adjust jdk1.8.0_181.jdk to match the installed version).
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home
  • ant (brew install ant)


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


sudo apt-get install git make gcc ant openjdk-8-jdk

If your Linux version is Ubuntu 14.04 and later, you can use the above command line. If not, use the info at

Arch Linux

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

CentOS 7 Linux

Check if present thus:
rpm -qa --qf "%{name}\n" git make gcc xz-lzma-compat ant \*openjdk\* | sort
and install any packages needed, thus:
sudo yum -y install make gcc ant xz-lzma-compat java-1.8.0-openjdk

N.B.: 'ant' pulls in the '-devel' version of 'java-1.8.0-openjdk' which is expected

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

git clone --depth 1

(Note: This only pulls the latest commit)
(Note: The download size is greater than 1GB and might hog all your bandwidth for a long while if your download speed is slow, such as a dialup connection or anything below 8mbps)

Build it

Use the command line:

(Note: cd the path to build folder. Do not copy what is written next to the cd below. )

cd /path/to/arduino/build
ant dist

This will prompt you to enter an Arduino version to build (the latest development version will be listed in the prompt, i.e. 1.8.3) before it starts the build.

If everything went well, you'll have no errors. (Feel free to make edits of things to include here for common problems.)

Run it

ant run

(ant run will call build and start)

Each time you make a change, use ant dist to build the thing and ant run to get it up and running.

Updating to the Latest Version

Each time you want to update to latest version from git use:

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
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.