Dependencies

Here are the dependencies for building from source and running MALT.

Required dependencies

The dependencies of MALT are the following if you use the official releases which embed some extra files compared to the GIT repository:

Binutils
  • 2.24 - 2.38

  • Required for the nm and addr2line tools to solve the symbols and get the global variables informations.

CMake
  • 2.8 - 3.28.3

  • Required to build MALT from source.

Optional dependencies

Those dependencies are not required but will permit to enable some features support of MALT.

libelf
  • 0.128 - 0.183

  • To extract global variables list from executables and libraries.

libunwind
  • 3.11 - 3.13

  • An alternative implementation of glibc backtrace method

libpython
  • 3.11 - 3.14

  • To activate the support of Python language in MALT.

Graphviz
  • 2.42.2

  • To activate the call graph rendering in the webview via the dot command.

Embeded dependencies

Some dependencies are embeded into the GIT repository to ease installation of MALT because most of the time not present by default on available systems. If present MALT will use the system version.

httplib
  • 0.23.1

  • To implement the C++ based webview server REST API.

GoogleTest
  • 1.14.0

  • To build and run the MALT unit tests.

Nlohmann-json
  • 3.12.0

  • Use to decode / encoder the JSON data in the webview.

NodeJS dependencies

The webview is based on the VueJS framework, so it requires some dependencies for NodeJS in order to be built.

The CMake script automatically download them if you are using the git repository as it does not contains those dependencies.

The official release archive embed them and contains a pre-build version of the webview so you do not requires NodeJS / NPM nor the node_modules to get it running on your system.

Dependencies for the GIT repo

If you want to use the GIT repository you might also need some extra dependences to get some files not embeded in not embeded into the GIT repository but present in the officiel release archive :

NodeJS
  • 0.10.30 - 12.22.9

  • Required if you want to download the interface dependences via npm which are packed into the officiel release.

Curl
  • 8.5.0

  • Required to download the sources of JeMalloc memory allocator. Those sources are packed in the the official release.

Dependencies in distributions

If you want to install the dependencies provided by your system you can easily use the following commands.

Debian / Ubuntu

If you are using an APT based distribution derivated from Debian you can use :

sudo apt install cmake g++ make libssl-dev libunwind-dev \
                 libelf-dev libunwind-dev nodejs npm \
                 nlohmann-json3-dev graphviz python3-dev curl

Fedora / Rocky

If you are using an RPM based distribution derivated from Fedora you can use :

sudo dnf install -y cmake gcc-c++ make \
                    openssl-devel elfutils-libelf-devel \
                    nodejs npm curl bzip2 xz graphviz python3-devel

Archlinux

If you are using Archlinux :

pacman -Sy cmake gcc make openssl \
           libunwind libelf nodejs npm curl \
           nlohmann-json graphviz python3

Gentoo

If you are using Gentoo :

emerge cmake gcc make openssl sys-libs/libunwind elfutils \
       nodejs curl dev-cpp/nlohmann_json media-gfx/graphviz