build-from-source.md 7.8 KB


icon: material/file-code

Build from source

:material-graph: Requirements

sing-box 1.11

  • Go 1.23.1 - ~

sing-box 1.10

  • Go 1.20.0 - ~

sing-box 1.9

  • Go 1.18.5 - 1.22.x
  • Go 1.20.0 - 1.22.x with tag with_quic, or with_utls enabled

:material-fast-forward: Simple Build

make

Or build and install binary to $GOBIN:

make install

:material-cog: Custom Build

TAGS="tag_a tag_b" make

or

go build -tags "tag_a tag_b" ./cmd/sing-box

:material-folder-settings: Build Tags

Build Tag Enabled by default Description
with_quic :material-check: Build with QUIC support, see QUIC and HTTP3 DNS transports, Naive inbound, Hysteria Inbound, Hysteria Outbound and V2Ray Transport#QUIC.
with_grpc :material-close:️ Build with standard gRPC support, see V2Ray Transport#gRPC.
with_dhcp :material-check: Build with DHCP support, see DHCP DNS transport.
with_wireguard :material-check: Build with WireGuard support, see WireGuard outbound.
with_utls :material-check: Build with uTLS support for TLS outbound, see TLS.
with_acme :material-check: Build with ACME TLS certificate issuer support, see TLS.
with_clash_api :material-check: Build with Clash API support, see Experimental.
with_v2ray_api :material-close:️ Build with V2Ray API support, see Experimental.
with_gvisor :material-check: Build with gVisor support, see Tun inbound and WireGuard outbound.
with_embedded_tor (CGO required) :material-close:️ Build with embedded Tor support, see Tor outbound.
with_tailscale :material-check: Build with Tailscale support, see Tailscale endpoint
with_naive_outbound :material-close:️ Build with NaiveProxy outbound support, see NaiveProxy outbound.

It is not recommended to change the default build tag list unless you really know what you are adding.

:material-layers: with_naive_outbound

NaiveProxy outbound requires special build configurations depending on your target platform.

Supported Platforms

Platform Architectures Mode Requirements
Linux amd64, arm64 purego None (library included in official releases)
Linux 386, amd64, arm, arm64 CGO Chromium toolchain, glibc >= 2.31 at runtime
Linux (musl) 386, amd64, arm, arm64 CGO Chromium toolchain
Windows amd64, arm64 purego None (library included in official releases)
Apple platforms * CGO Xcode
Android * CGO Android NDK

Windows

Use with_purego tag.

For official releases, libcronet.dll is included in the archive. For self-built binaries, download from cronet-go releases and place in the same directory as sing-box.exe or in a directory listed in PATH.

Linux (purego, amd64/arm64 only)

Use with_purego tag.

For official releases, libcronet.so is included in the archive. For self-built binaries, download from cronet-go releases and place in the same directory as sing-box binary or in system library path.

Linux (CGO)

See cronet-go.

  • glibc build: Requires glibc >= 2.31 at runtime
  • musl build: Use with_musl tag, statically linked, no runtime requirements

Apple platforms / Android

See cronet-go.