Building

Frida Building

Prerequisites

RequirementDetails
C/C++ toolchainPlatform default (GCC/Clang)
Node.js>= 18
GitAny recent version

Ubuntu / Debian — install all prerequisites:

1sudo apt-get install build-essential git lib32stdc++-9-dev \
2    libc6-dev-i386 nodejs npm

Get Source

1git clone https://github.com/frida/frida.git
2cd frida

Native Build

1make              # builds into ./build by default
2make install      # installs to system prefix

Configure a custom install prefix:

1./configure --prefix=/path/to/prefix
2make
3make install

Passing Meson Options

Extra options are forwarded to Meson with -- separator:

1./configure -- first-option second-option …

Options can target specific subprojects using the -D<subproject>:<option>=<value> syntax:

1./configure -- \
2    -Dfrida-gum:devkits=gum,gumjs \
3    -Dfrida-core:devkits=core

Available options for each subproject are listed in their meson.options file inside the subprojects/ directory.

Cross-Compilation Targets

Use --host=<target-triplet> to cross-compile. The host triplet controls toolchain selection and sysroot.

iOS / watchOS / tvOS

1./configure --host=ios-arm64
2./configure --host=watchos-arm64
3./configure --host=tvos-arm64
4./configure --host=ios-arm64-simulator   # simulator variant

Android

1./configure --host=android-arm64

Raspberry Pi (ARM Linux)

Install the cross-compiler first:

1sudo apt-get install g++-arm-linux-gnueabihf

Then configure:

1./configure --host=arm-linux-gnueabihf
2make

Out-of-Tree Builds

Multiple configurations can be built simultaneously from one source tree by running configure from separate empty directories outside the source:

1mkdir build-ios
2cd build-ios
3../frida/configure --host=ios-arm64
4make

Key Paths

PathPurpose
./build/Default build output directory
subprojects/*/meson.optionsPer-subproject configurable options
https://github.com/frida/frida.gitMain repository