> For the complete documentation index, see [llms.txt](https://docs.qwertycoin.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.qwertycoin.org/nodes-and-builds/compiling-from-source/linux.md).

# Linux

> **Verified against:** the latest stable release; exact review revisions are recorded in [Pinned source and release revisions](/contribution-and-evidence/source-version-matrix.md).

> **Validated recipe source:** latest stable Core release workflow, Ubuntu 22.04 x86\_64, GCC 11.

```bash
read -r -p "Latest stable Core release tag: " QWC_RELEASE_TAG
[[ "$QWC_RELEASE_TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]] || {
  echo "invalid stable release tag" >&2
  exit 1
}

sudo apt-get update
sudo apt-get install -y build-essential cmake ninja-build pkg-config git ccache python3 curl file patchelf binutils zip \
  libboost-all-dev libssl-dev libzmq3-dev libpgm-dev libunbound-dev libsodium-dev \
  libhidapi-dev libusb-1.0-0-dev libunwind-dev liblzma-dev libexpat1-dev \
  libgcrypt20-dev libgpg-error-dev libprotobuf-dev protobuf-compiler libgtest-dev

git clone --recursive https://github.com/qwertycoin-org/qwertycoin.git source
git -C source checkout --detach "$QWC_RELEASE_TAG"
git -C source submodule update --init --recursive

cmake -S source -B build/linux -G Ninja \
  -DCMAKE_BUILD_TYPE=Release -DARCH=default -DBUILD_64=ON -DSTATIC=OFF \
  -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTS=ON -DBUILD_DOCUMENTATION=OFF \
  -DBUILD_DEBUG_UTILITIES=OFF -DUSE_DEVICE_TREZOR=OFF -DUSE_READLINE=OFF \
  -DBUILD_TAG=linux-x64 -DMANUAL_SUBMODULES=1 \
  -DMONERO_PARALLEL_COMPILE_JOBS=2 -DMONERO_PARALLEL_LINK_JOBS=1

cmake --build build/linux --target daemon simplewallet wallet_rpc_server epose_unit_tests --parallel 2
ctest --test-dir build/linux -R '^epose_unit_tests$' --output-on-failure
build/linux/bin/qwertycoind --version
build/linux/bin/qwertycoin-wallet-cli --help >/dev/null
build/linux/bin/qwertycoin-wallet-rpc --help >/dev/null
```

Other distributions/architectures may work but are not claimed as release-validated here. If static archives are unavailable, use this dynamic build instead of forcing `STATIC=ON`.
