Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
102 lines (75 sloc) 2.94 KB

ZeroVM gcc toolchain

How to build the full toolchain from scratch

Install Prerequisites

Ubuntu 12.04

Toolchain requires multiple dependencies, including zerovm-zmq-dev. To install zerovm-zmq-dev, first choose from one of the following PPAs:

Add the PPA to your sources list:

sudo apt-get install python-software-properties
sudo add-apt-reposistory ppa:zerovm-ci/zerovm-latest
# or 'sudo add-apt-repository ppa:zerovm-ci/zerovm-stable'
sudo apt-get update

Install dependencies:

sudo apt-get install libc6-dev-i386 libglib2.0-dev pkg-config git \
    build-essential automake autoconf libtool g++-multilib texinfo \
    flex bison groff gperf texinfo subversion \

Setup Environment Variables

You need to set them up prior to building anything. We'll use the following variables:

  • ZVM_PREFIX: should point to an empty writable directory all files will be installed here after make install
  • ZRT_ROOT: should point to git clone of zrt repository
  • LD_LIBRARY_PATH: library path for (from zvm-validator)
  • CPATH: include directory containing zvm.h (from zerovm-zmq-dev)

We will use these values for this guide:

export ZVM_PREFIX=$HOME/zvm-root
export ZRT_ROOT=$HOME/zrt
export LD_LIBRARY_PATH=/usr/lib64
export CPATH=/usr/x86_64-nacl/include

Clone Things

git clone $ZRT_ROOT

git clone $HOME/zvm-toolchain
cd $HOME/zvm-toolchain/SRC
git clone
git clone
git clone
git clone
git clone

Build Toolchain

cd $HOME/zvm-toolchain
make -j8 ZEROVM=`which zerovm`  # e.g., '/usr/bin/zerovm'

If something goes wrong you will need to delete everything (apart from zerovm and validator) in the $ZVM_PREFIX directory and only then do make clean and make (this is how the gcc toolchain works, sadly).

Example of cleanup procedures:

cd $HOME/zvm-toolchain
make clean
rm -rf *
make install PREFIX=$ZVM_PREFIX

Install Debugger

Debugger prerequisites:

sudo apt-get install flex bison groff libncurses5-dev libexpat1-dev

cd $HOME/zvm-toolchain/SRC
git clone
cd gdb
mkdir BUILD
../configure --program-prefix=x86_64-nacl- --prefix=$ZVM_PREFIX
make -j4
make install