How to build on Ubuntu Linux

Here's how to make an optimal build of latest bleeding-edge code on Ubuntu Linux. Most of it applies to other distros too (also works for Ubuntu on Windows https://msdn.microsoft.com/en-us/commandline/wsl/).

Install pre-requisites:

Required stuff
  sudo apt-get install build-essential libssl-dev
  sudo apt-get install yasm libgmp-dev libpcap-dev libnss3-dev libkrb5-dev pkg-config libbz2-dev zlib1g-dev
If you have an NVIDIA GPU (CUDA and OpenCL support)
  sudo apt-get install nvidia-cuda-toolkit nvidia-opencl-dev
If you have an AMD GPU (or want to use CPU as OpenCL device)
  sudo apt-get install fglrx-updates-dev
Optional MPI support
  sudo apt-get install libopenmpi-dev openmpi-bin
Optional REXGEN support (additional cracking modes)

Cmake needs to be 2.8.12 or above. Ubuntu 14.04 LTS has this.

  sudo apt-get install subversion cmake bison flex
  mkdir ~/src && cd ~/src
  svn checkout https://github.com/teeshop/rexgen.git rexgen
  cd rexgen/trunk/src/
  mkdir build && cd build
  cmake ..
  make && sudo make install

Clone latest bleeding-edge Jumbo and build:

Clone GIT repo
  cd ~/src
  git clone git://github.com/magnumripper/JohnTheRipper -b bleeding-jumbo john
Build
  cd ~/src/john/src
  # For MPI, use './configure --enable-mpi' below
  ./configure && make -s clean && make -sj4

Test your build:

  $ ../run/john --test=0 --format=cpu

To benchmark, drop the =0 argument to –test.

To test OpenCL or CUDA formats, or both, use –format=[cuda|opencl|cuda].

To test specific format(s) just name them. Wildcards are OK, eg. –format=lotus*