You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4.3 KiB

How to compile and install Infer

Pre-compiled versions

We provide a source release of Infer packaged with pre-build binaries for clang and facebook-clang-plugins for Linux and MacOS. We encourage you to use this release as compiling clang is time-consuming. Install the dependencies as explained in the next section, then follow the instructions in Infer's getting-started page to compile and install Infer.

Alternatively, we also provide a docker image in the docker/ directory. Simply go to that directory and run ./run.sh to get started with a working installation of Infer.

Infer dependencies for MacOSX

Here are the prerequisites to be able to compile Infer on MacOSX. This is required to be able to use the release (faster), or to compile everything from source (see the end of this document).

  • opam (instructions here)
  • Python 2.7
  • Java >= 1.7 (only needed for the Java analysis)
  • clang in Xcode command line tools. You can install them with the command xcode-select --install (only needed for the C/Objective-C analysis)
  • Xcode >= 6.1 (only needed for the C/Objective-C analysis)

You can install some of these dependencies using Homebrew:

brew install opam

Once you have all the dependencies above installed, configure opam as follows:

opam init -y --comp=4.01.0
eval $(opam config env)
opam update
opam install -y \
  atdgen.1.6.0 \
  extlib.1.5.4 \
  javalib.2.3.1 \
  sawja.1.5.1

Infer dependencies for Linux

Here are the prerequisites to be able to compile Infer on Linux. This is required to be able to use the release (faster), or to compile everything from source (see the end of this document).

  • gcc >= 4.7.2
  • opam
  • Python 2.7
  • Java >= 1.7 (only needed for the Java analysis)

How to install the dependencies on Ubuntu 12.04.4 LTS

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y \
  build-essential \
  g++-4.8 \
  gcc-4.8 \
  git \
  libgmp-dev \
  libmpc-dev \
  libmpfr-dev \
  m4 \
  openjdk-7-jdk \
  python-software-properties \
  unzip \
  zlib1g-dev
sudo update-alternatives \
  --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 \
  --slave /usr/bin/g++ g++ /usr/bin/g++-4.8

How to install the dependencies on Debian 7 / Ubuntu 14.04

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y \
  build-essential \
  git \
  libgmp-dev \
  libmpc-dev \
  libmpfr-dev \
  m4 \
  openjdk-7-jdk \
  python-software-properties \
  unzip \
  zlib1g-dev

Setting up Opam

Unfortunately, the version of opam that ships with some Linux distributions is broken, so you'll have to get it from the web:

wget -O opam https://github.com/ocaml/opam/releases/download/1.2.2/opam-1.2.2-x86_64-Linux
chmod +x opam

Alternatively, follow the instructions from the opam webpage.

Once opam is installed, run the following commands:

./opam init -y --comp=4.01.0
eval $(./opam config env)
./opam update
./opam install -y \
  atdgen.1.6.0 \
  extlib.1.5.4 \
  javalib.2.3.1 \
  sawja.1.5.1

Compile Infer from source for the Java analysis

If you use Infer to analyze Java programs only, you can simple use these steps to get Infer up and running:

# Checkout Infer
git clone https://github.com/facebook/infer.git
cd infer
# Compile Infer
make -C infer java
# Install Infer into your PATH
export PATH=`pwd`/infer/bin:$PATH

Compile Infer from source with clang enabled

You do not need to follow the instructions below if you are using a release of Infer or if you only need to run Infer on Java programs.

Infer uses a special version of clang along with a clang plugin. Follow these steps to compile them from source and install Infer.

# Checkout Infer
git clone https://github.com/facebook/infer.git
cd infer
git submodule update --init --recursive
# Compile clang
facebook-clang-plugins/clang/setup.sh # go have a coffee :)
# Compile the clang plugin
./compile-fcp.sh
# Compile Infer
make -C infer
# Install Infer into your PATH
export PATH=`pwd`/infer/bin:$PATH