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 : .. code-block:: shell 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 : .. code-block:: shell 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** : .. code-block:: shell pacman -Sy cmake gcc make openssl \ libunwind libelf nodejs npm curl \ nlohmann-json graphviz python3 Gentoo ^^^^^^ If you are using **Gentoo** : .. code-block:: shell emerge cmake gcc make openssl sys-libs/libunwind elfutils \ nodejs curl dev-cpp/nlohmann_json media-gfx/graphviz