Installing ROSE


How to install ROSE from source code.

If you don't want to install ROSE from scratch, you can try to use the virtual machine image with ROSE installed. See more at

Downloading ROSE

ROSE is free (libre) software distributed under a modified BSD license. The ROSE team at Lawrence Livermore National Laboratory makes two kinds of public source releases both as Git repositories.

ROSE can be downloaded with standard Git commands. Do not use Github's "Download ZIP" button since this strips necessary version information from the ZIP archive.

Development Repository

git clone rose
cd rose/

Release Repository

git clone
cd rose/

Versioning Scheme

ROSE uses a continuous delivery paradigm. To obtain the identification for a particular version of ROSE, run "git rev-parse HEAD" in the ROSE source directory (the reported SHA1 hash can be abbreviated to 7 or so characters for convenience). ROSE also has a loosely-coupled dotted quad version number which can be found in the ROSE_VERSION file, but the Git SHA1 hash is more precise.

The repositories listed above are the official release points; other repositories might be available but are unofficial. Some members of the ROSE team also distribute custom builds in virtual machines, which can be a good way to get up and playing quickly. Query one of the ROSE mailing lists to find this information, which changes from time to time.

Hardware requirements

ROSE is tested and supported on Redhat Enterprise Linux RHEL6 and RHEL7 running on Intel x86-64 hardware. Some developers are able to use other operating systems and platforms, including Debian and Ubuntu.

The ROSE library consists of approximately two million lines of C++ and requires substantial resources to compile. The machine should have at least eight gigabytes of free RAM available, and the build system can make use of multiple CPU cores. Compiling the ROSE library (no projects or tests) with all features enabled will take approximately 30 minutes on a 12 core machine with 48 gigabytes of RAM. Developers working on ROSE itself may want to consider using ccache to speed up recompiles; rebuilding the library takes about two minutes on the same hardware with ccache.

Software dependencies

In order to build ROSE from source code, software dependencies should first be installed.

Software component Necessity Supported Versions Regularly tested


Git Required Any recent version Portability: 1.9.1, 2.1.4, 2.7.4, 2.11.0; Integration:

Used for cloning the ROSE release repository to your local machine. See Installing Git.

wget Required Any recent version Portability: 1.15, 1.16, 1.17, 1.18; Integration: 1.12, 1.16

Used to download the EDG binary tarball, a C/C++ parser. This is currently (Sep 2015) required even when ROSE is configured without the C/C++ frontend languages. See Installing wget.

GNU Compiler Collection Required GCC-4.2.4 or later Portability: GCC-4.8.4 (C++03, C++11), GCC-4.8.5 (C++03, C++11), GCC-4.9.2 (C++03, C++11), GCC-4.9.3 (C++03, C++11), GCC-5.4.0 (C++03, C++11), GCC-6.3.0 (C++03, C++11), LLVM-3.5.0 (C++03, C++11), LLVM-3.8.0 (C++03); Integration: GCC-4.8.4 (C++03, C++11), Intel 14.0.3, 15.0.4, 16.0.3, 17.0.4

To compile ROSE. The gcc, g++, and gfortran compilers are required. Furthermore, all libraries on which ROSE depends should be compiled with the same compiler for best results. See Installing the GNU Compiler Collection.

GNU autotools Required (or cmake) automake-1.11.1 or later; autoconf-2.59 or later; libtool-1.5.6 or later Portability: automake-1.14.1, automake-1.15, autoconf-2.69, libtool-2.4.2, libtool-2.4.6; Integration: automake-1.11.1, autoconf-2.67, libtool-2.2.6b

Automake, autoconf, and libtool are used to configure ROSE and generate makefiles. You can install either this dependency or the cmake dependency. See Installing GNU Autotools.

CMake Required (or autotools) 2.8.12 or later Portability: untested; Integration: 2.8.12

Configures ROSE and generates makefiles. You can install either this dependency or the GNU autotools. See Installing CMake.

Flex and bison Required bison-2.4.1 or later Portability: flex-2.5.35, flex-2.5.39, flex-2.6.0, flex-2.6.1, bison-3.0.2, bison-3.0.4; Integration: flex-2.5.35, 2.5.39, 2.6.0, 2.6.1, bison-4.2.1, 3.0.2, 3.0.4

Generates code for lexical analyzers and parsers. See Installing flex and bison..

Java Virtual Machine Required Sun/Oracle version 7 Portability: Oracle JDK 8.161; Integration: 1.7.0_51

Runtime for Java and Fortran frontends in ROSE. See Installing the Java runtime environment.

Java Development Kit Required (cmake) Any version 7 Portatility: Oracle JDK 8.161; Integration: OpenJDK 7

A JDK is required when configuring ROSE with cmake, even if the Java and Fortran frontends are disabled. See Installing the Java development kit. Avoid Sun/Oracle version 1.7.0_25.

Boost Required 1.57 through 1.69 Portability: 1.57.0, 1.58.0, 1.59.0, 1.60.0, 1.61.0, 1.62.0, 1.63.0, 1.64.0, 1.65.1, 1.66.0; Integration: ?

C++ portable runtime features. ROSE and/or software used by ROSE requires the following Boost libraries: chrono, date_time, filesystem, iostreams, program_options, random, regex, signals, system, thread, and wave. See Installing Boost. More info here.

The following table lists optional packages for advanced users.

Software component Necessity Supported Versions Regularly tested


Python Required 3 Portability: 3.6.0; Integration: 3.1.3

Needed for the ROSE Python frontend. See Installing Python.

Doxygen Optional 1.8.1 through 1.8.10 Portability: untested; Integration: 1.8.1

Generates local copies of the online documentation. See Installing Doxygen.

GraphViz Optional Any recent version Portability: untested; Integration: untested

For visualizing graphs such as control flow graphs. See Installing GraphViz.

ZGRViewer Optional Any recent version Portability: untested; Integration: untested

A free Java program for interactive visualization of graphs, supporting features like zooming and panning. See Installing ZGRViewer.

LaTeX Optional Any recent version Portability: untested; Integration: pdfTeX 3.1415926

For generating PDF documentation from TeX/LaTeX sources.

dot2tex Optional Any recent version Portability: untested; Integration: ?

Generates TeX versions of graphs for inclusion into documentation.

Qt Optional 4 Portability: untested; Integration: untested

For building ROSE's tools that have a graphical user interface. See Installing Qt.

GraphicsMagick Optional Any recent version Portability: untested; Integration: 1.3.25

See Installing GraphicsMagick.

Relational database system Optional SQLite3 and/or PostgreSQL Portability: untested; Integration: SQLite-3.7.3; libpqxx-3.0; postgresql-8.4

For tools that store results in a database. See Installing a Relational Database Management System.

GNU readline Optional ? Portability: untested; Integration: untested

For command-line editing in interactive tools. See Installing GNU readline.

libmagic Optional 3 Portability: untested; Integration: untested

For identifying magic numbers in binary analysis. See Installing libmagic.

yaml-cpp Optional 0.5.1 through 0.5.3 Portability: 0.5.1, 0.5.2, 0.5.3; Integration: untested

For reading YAML or JSON configuration files and storing results. Yaml-cpp must be compiled against the same version of boost used by ROSE. See Installing YAML-cpp.

Dlib Optional 18.11 - 18.18 Portability: 18.16, 18.17, 18.18; Integration: ?

For certain binary analysis algorithms. See Installing Dlib.

Wt Optional 3.3.3 through 3.3.7 Portability: 3.3.4, 3.3.5; Integration: untested

For binary analysis tools that present results through a web server. Wt must be compiled against the same version of Boost used by ROSE. See Installing Wt.

Yices Optional 1.0.34 Portability: untested; Integration: untested

An SMT solver used by certain binary analysis algorithms.

Cryptography libs Optional libssl, libxml-2, libgcrypt-11 Portability: untested; Integration: libxml-2; libgcrypt-11

For various analysis algorithms that use cryptographic functions. See Installing cryptography libraries.

libxml2 Optional Any recent version Portability: untested; Integration: untested

For parsing XML files in certain tools such as roseHPCT and BinaryContextLookup. See Installing libxml2.

MPI Optional ? Portability: untested; Integration: ?

For features in ROSE that allow for distributed parallel AST traversals.

Haskell compiler Optional ghc-6.10.x Portability: untested; Integration: ghc-?

For ROSE API Haskell bindings so that tools can be written in Haskell. ROSE does not parse or support source-to-source analysis and transformation of the Haskell language. See Installing Haskell.

libdwarf and libelf Optional dwarf-20160613 - 20170416; libelf-0.133 - 0.169 Portability: untested; Integration: untested Used by binary analysis to parse DWARF debugging information. ROSE has its own internal, portable ELF parser, but libdwarf depends on the libelf parser. See Installing libdwarf and libelf.

In the tables above, the "Regularly tested" column lists the versions that are used during integration testing and portability testing. Integration testing is part of the ROSE software release process, but portability testing occurs on a separate schedule and covers only selected ROSE releases. Additional software versions are tested by ROSE authors and users in an ad hoc manner and not recorded in these tables.

Configuring ROSE

ROSE must be configured before it can be built. Two mechanisms are supported: GNU autotools and CMake. Most tests, tools, and projects can only be built with autotools at this time (Sep 2015). Both methods boil down to running some configuration step that detects (or is told) what optional software is available, and this produces a set of makefiles for building ROSE.

In the instructions that follow, "$ROSE_SRC" is the top-level directory holding the ROSE source code, and "$ROSE_BLD" is a build directory that these instructions have you create to hold files generated during the build.

Configuring with GNU autotools

If you desire to configure ROSE with GNU autotools instead of CMake, follow these steps:

$ROSE_SRC/configure --prefix=$HOME/my-rose-installation --enable-languages=c,c++ --with-boost=$BOOST_ROOT

Configuring with CMake

If you desire to configure ROSE with CMake instead of GNU autotools, Follow these steps:


Building the library

To build and install the ROSE library, run "cd $ROSE_BLD" and then "make install-rose-library" (equivalently, "make -C $ROSE_BLD install-rose-library"). If you run "make" without specifying the "install-rose-library" target then additional tests, projects, and tutorials are also built. Projects are typically not tested to the same degree as the core library. You may specify an amount of parallelism with make's "-j N" switch. Ensure that your machine meets the minimum hardware requirements before starting. A parallel build will require more than the minimum.

If you encounter errors about downloading EDG binary tarballs, see Installing EDG.

If you modify a ROSE header file then run "make -C $ROSE_BLD clean" before rebuilding if you're using GNU automake (not necessary for CMake).

If you're installing a different version of ROSE (or you've made modifications and are re-running "make install"), it is prudent to first remove the original installation directory to prevent the new installation from containing a mix of old and new versions.

The "check" targets in the makefiles run a variety of tests, most of which are also run by the automated continuous integration and release testing.

Using the library

If you're interested in ROSE tool development, read the Developing ROSE-based tools documentation.

Next steps

If you're interested in source code analysis or source-to-source translation, read the ROSE tutorial. If you're interested in binary analysis try Binary analysis tutorial.

This page is generated from $ROSE/docs/Rose/Installation/100_Installation.dox

Collaboration diagram for Installing ROSE:


 Software dependencies
 Software on which ROSE depends.