You must be running a 64-bit x86 Linux distribution. Darling cannot be used on a 32-bit x86 system, not even to run 32-bit applications.
It is recommended that you use at least Clang 3.8. You can force a specific version of Clang (if it is installed on your system) by editing Toolchain.cmake
.
sudo apt-get install cmake clang bison flex xz-utils libfuse-dev libudev-dev pkg-config libc6-dev-i386 linux-headers-amd64 libcap2-bin git libgcc-5-dev:i386 libcairo2-dev libgl1-mesa-dev libtiff5-dev libfreetype6-dev libfreetype6-dev:i386
sudo apt-get install cmake clang bison flex xz-utils libfuse-dev libudev-dev pkg-config libc6-dev:i386 linux-headers-generic gcc-multilib libcap2-bin libcairo2-dev libgl1-mesa-dev libtiff5-dev libfreetype6-dev libfreetype6-dev:i386 git
sudo pacman -S --needed make cmake clang flex bison icu fuse linux-headers gcc-multilib lib32-gcc-libs pkg-config fontconfig cairo libtiff python2 mesa
sudo dnf install cmake clang bison flex python2 glibc-devel.i686 fuse-devel systemd-devel kernel-devel cairo-devel freetype-devel.{x86_64,i686} libjpeg-turbo-devel.{x86_64,i686} libtiff-devel.{x86_64,i686} fontconfig-devel.{x86_64,i686} libglvnd-devel mesa-libGL-devel
Darling makes extensive use of Git submodules, therefore you cannot use a plain git clone
. Make a clone like this:
git clone --recursive https://github.com/darlinghq/darling.git
Now let's build Darling:
# Move into the cloned sources cd darling # Make a build directory mkdir build && cd build # Configure the build cmake .. # Build and install Darling make sudo make install
Darling also requires a kernel module named darling-mach
:
make lkm sudo make lkm_install
If module installation produces warnings such as SSL error:02001002:system library:fopen:No such file or directory: bss_file.c:175
, then these can be usually ignored, unless you configured your system to enforce secure boot.
The kernel module is an experimental piece of code. It is highly recommended that only trusted users have access to /dev/mach
.
Certain applications (typically 32-bit ones) may produce the following error:
Cannot mmap segment __TEXT at 0x1000: Operation not permitted
To fix the problem, run the following (assuming the installation prefix is /usr/local
):
sudo setcap cap_sys_rawio=ep /usr/local/libexec/darling/bin/mldr sudo setcap cap_sys_rawio=ep /usr/local/libexec/darling/bin/mldr32