Like most software gem5 requires a number of packages and tools to be able to build itself. Since it's highly likely that any user will be required to make some changes to gem5 to use it unlike most software having an environment capable of building gem5 is require. The following tools are needed to build gem5:
To build M5, you will need the following software:
- g++ version 3.4.6 or newer. < 3.4 seems to have some issues with templates or internal compiler errors prevent compilation.
- Python, version 2.4 or newer. M5 links in the Python interpreter, so you need the Python header files and shared library (e.g., /usr/lib/libpython2.4.so) in addition to the interpreter executable. These may or may not be installed by default. For example, on Debian/Ubuntu, you need the "python-dev" package in addition to the "python" package. If you need a newer or different Python installation but can't or don't want to upgrade the default Python on your system, see our page on using a non-default Python installation.
- SCons, version 0.98.1 or newer. SCons is a powerful replacement for make. See here to download SCons. If you don't have administrator privileges on your machine, you can use the "scons-local" package to install scons in your m5 directory, or install SCons in your home directory using the '--prefix=' option.
- SWIG, version 1.3.31 or newer.
- zlib, any recent version. For Debian/Ubuntu, you will need the "zlib-dev" or "zlib1g-dev" package to get the zlib.h header file as well as the library itself.
- m4, the macro processor.
Things in ext
There are a number of libraries that are in the ext directory under the source tree. This is done primarily so that users don't need to install rarely used packages. These include:
- dnet -- dnet provides a simplified, portable interface to several low-level networking routines.
- gzstream -- Gzstream is a small C++ library, basically just a wrapper, that provides the functionality of the zlib C-library in a C++ iostream.
- libelf -- ELF object file access library.
- PLY -- PLY is an implementation of lex and yacc parsing tools for Python.
- x11ksyms -- Keycodes from X11 for VNC support.