cronet-go

February 21, 2026 ยท View on GitHub

Reference

Go bindings for naiveproxy.

Supported Platforms

TargetOSCPU
android/386androidx86
android/amd64androidx64
android/armandroidarm
android/arm64androidarm64
darwin/amd64macx64
darwin/arm64macarm64
ios/arm64iosarm64
ios/amd64iosamd64
linux/386linuxx86
linux/amd64linuxx64
linux/armlinuxarm
linux/arm64linuxarm64
linux/loong64linuxloong64
windows/amd64winx64
windows/arm64winarm64

System Requirements

PlatformMinimum Version
macOS12.0 (Monterey)
iOS/tvOS15.0
Windows10
Android5.0 (API 21)
Linux (glibc)glibc 2.31 (loong64: 2.36)
Linux (musl)any (loong64: 1.2.5)

Downstream Build Requirements

PlatformRequirementsGo Build Flags
Linux (glibc)Chromium toolchain-
Linux (musl)Chromium toolchain-tags with_musl
macOS / iOSmacOS Xcode-
iOS simulator/ tvOS / tvOS simulatormacOS Xcode + SagerNet/gomobile-
Windows-CGO_ENABLED=0 -tags with_purego
AndroidAndroid NDK-

Linux Build instructions

git clone --recursive --depth=1 https://github.com/sagernet/cronet-go.git
cd cronet-go
go run ./cmd/build-naive --target=linux/amd64 download-toolchain
#go run ./cmd/build-naive --target=linux/amd64 --libc=musl download-toolchain

# Outputs CC, CXX, and CGO_LDFLAGS=-fuse-ld=lld
export $(go run ./cmd/build-naive --target=linux/amd64 env)
#export $(go run ./cmd/build-naive --target=linux/amd64 --libc=musl env)

cd /path/to/your/project
go build
# go build -tags with_musl

Directories to cache

- cronet-go/naiveproxy/src/third_party/llvm-build/
- cronet-go/naiveproxy/src/gn/out/
- cronet-go/naiveproxy/src/chrome/build/pgo_profiles/
- cronet-go/naiveproxy/src/out/sysroot-build/

Windows / purego Build Instructions

For Windows or pure Go builds (no CGO), you need to distribute the dynamic library alongside your binary.

Download Library

Download libcronet.dll (Windows) or libcronet.so (Linux) from GitHub Releases.

Build with purego

# Windows (purego is required)
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -tags with_purego -o myapp.exe

# Linux with purego (optional, for dynamic linking)
CGO_ENABLED=0 go build -tags with_purego -o myapp

Distribution

Place the library file in the same directory as your executable:

  • Windows: libcronet.dll
  • Linux: libcronet.so

For Downstream Developers

If you need to programmatically extract libraries from Go module dependencies (e.g., for CI/CD pipelines):

go run github.com/sagernet/cronet-go/cmd/build-naive@latest extract-lib --target windows/amd64 -n libcronet_amd64.dll
go run github.com/sagernet/cronet-go/cmd/build-naive@latest extract-lib --target linux/amd64 -n libcronet_amd64.so