💾 Archived View for radare.org › book › first_steps › compilation_portability.gmi captured on 2024-05-10 at 10:51:35. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-11-04)

-=-=-=-=-=-=-

Compilation and Portability

Currently the core of radare2 can be compiled on many systems and architectures, but the main development is done on GNU/Linux with GCC, and on MacOS X with clang. Radare is also known to compile on many different systems and architectures (including TCC and SunStudio).

People often want to use radare as a debugger for reverse engineering. Currently, the debugger layer can be used on Windows, GNU/Linux (Intel x86 and x86_64, MIPS, and ARM), OS X, FreeBSD, NetBSD, and OpenBSD (Intel x86 and x86_64)..

Compared to core, the debugger feature is more restrictive portability-wise. If the debugger has not been ported to your favorite platform, you can disable the debugger layer with the --without-debugger `configure` script option when compiling radare2.

Note that there are I/O plugins that use GDB, WinDbg, or Wine as back-ends, and therefore rely on presence of corresponding third-party tools (in case of remote debugging - just on the target machine).

To build on a system using `acr` and `GNU Make` (e.g. on *BSD systems): ``` $ ./configure --prefix=/usr $ gmake $ sudo gmake install ``` There is also a simple script to do this automatically:

$ sys/install.sh

Static Build

You can build radare2 statically along with all other tools with the command: ``` $ sys/static.sh ``` ### Meson build

You can use meson + ninja to build: ``` $ sys/meson.py --prefix=/usr --shared --install ``` If you want to build locally:

$ sys/meson.py --prefix=/home/$USER/r2meson --local --shared --install

Docker

Radare2 repository ships a Dockerfile[1] that you can use with Docker.

1: Dockerfile

This dockerfile is also used by Remnux distribution from SANS, and is available on the docker registryhub[1].

1: registryhub

Cleaning Up Old Radare2 Installations ``` ./configure --prefix=/old/r2/prefix/installation make purge ```