Skip to content

Host Setup

Visual Ehrmanntraut edited this page Aug 19, 2025 · 12 revisions

Grab a build from the Actions tab for your operating system or build it yourself.

Dependencies

macOS

brew install libtool glib libtasn1 meson ninja pixman gnutls libgcrypt pkgconf lzfse capstone nettle ncurses libslirp libssh libpng jpeg-turbo zstd

Linux

Arch-based

sudo pacman -S git glib2 dtc pixman zlib libtasn1 ninja base-devel cmake gnutls pkgconf sdl2 libssh capstone gtk3
git clone https://aur.archlinux.org/lzfse.git && cd lzfse && makepkg -si && exit # or use AUR helper

Debian-based

sudo apt-get install -y build-essential libtool meson ninja-build pkg-config libcapstone-dev device-tree-compiler libglib2.0-dev gnutls-bin libjpeg-turbo8-dev libpng-dev libslirp-dev libssh-dev libusb-1.0-0-dev liblzo2-dev libncurses5-dev libpixman-1-dev libsnappy-dev vde2 zstd libgnutls28-dev libgmp10 libgmp3-dev lzfse liblzfse-dev libgtk-3-dev libsdl2-dev

Warning

Some distributions may ship a version of Nettle that is too old. In which case you must build nettle manually:

wget https://ftpmirror.gnu.org/gnu/nettle/nettle-3.10.2.tar.gz
# WARNING: please verify that the following command does not
# return an error as that could mean one of the mirrors
# tampered with the file, performing a supply chain attack.
echo "fe9ff51cb1f2abb5e65a6b8c10a92da0ab5ab6eaf26e7fc2b675c45f1fb519b5 nettle-3.10.2.tar.gz" | sha256sum -c -
tar -xvf nettle-3.10.2.tar.gz
cd nettle-3.10.2
./configure
make -j$(nproc)
sudo make install

In a later step, in the (QEMU) configure command, you will need to specify PKG_CONFIG_PATH, like so: PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig ../configure [omitted for brevity]

Building It Yourself

Clone the Repository

git clone https://github.com/ChefKissInc/QEMUAppleSilicon
git submodule update --init

ARM macOS

mkdir build && cd build
LIBTOOL="glibtool" ../configure --target-list=aarch64-softmmu,x86_64-softmmu --disable-bsd-user --disable-guest-agent --enable-lzfse --enable-slirp --enable-capstone --enable-curses --enable-libssh --enable-virtfs --enable-zstd --extra-cflags=-DNCURSES_WIDECHAR=1 --disable-sdl --disable-gtk --enable-cocoa --enable-nettle --enable-gnutls --extra-cflags="-I/opt/homebrew/include" --extra-ldflags="-L/opt/homebrew/lib" --disable-werror
make -j$(sysctl -n hw.logicalcpu)

x86 macOS

mkdir build && cd build
LIBTOOL="glibtool" ../configure --target-list=aarch64-softmmu,x86_64-softmmu --disable-bsd-user --disable-guest-agent --enable-lzfse --enable-slirp --enable-capstone --enable-curses --enable-libssh --enable-virtfs --enable-zstd --extra-cflags=-DNCURSES_WIDECHAR=1 --disable-sdl --disable-gtk --enable-cocoa --enable-nettle --enable-gnutls --disable-werror
make -j$(sysctl -n hw.logicalcpu)

Linux

mkdir build && cd build
../configure --target-list=aarch64-softmmu,x86_64-softmmu --enable-lzfse --enable-slirp --enable-capstone --enable-curses --enable-libssh --enable-virtfs --enable-zstd --enable-nettle --enable-gnutls --enable-gtk --enable-sdl --disable-werror
make -j$(nproc)
Clone this wiki locally