g3/doc/static-linking.md
Zhang Jingqiang f8df44c859
Some checks failed
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (java-kotlin) (push) Waiting to run
CodeQL Advanced / Analyze (python) (push) Waiting to run
CodeQL Advanced / Analyze (rust) (push) Waiting to run
CrossCompiling / Build-2 (push) Waiting to run
CrossCompiling / Build (push) Waiting to run
CrossCompiling / Build-1 (push) Waiting to run
CrossCompiling / Build-3 (push) Waiting to run
CrossCompiling / Build-4 (push) Waiting to run
CrossCompiling / Build-5 (push) Waiting to run
CrossCompiling / Build-6 (push) Waiting to run
CrossCompiling / Build-7 (push) Waiting to run
CrossCompiling / Build-8 (push) Waiting to run
CrossCompiling / Build-9 (push) Waiting to run
Linux-CI / Build (push) Waiting to run
Linux-CI / Build-1 (push) Waiting to run
Linux-CI / Build-2 (push) Waiting to run
Linux-CI / Build-3 (push) Waiting to run
Linux-CI / Clippy (push) Waiting to run
Linux-CI / Build vendored (push) Waiting to run
Linux-CI / Build vendored-1 (push) Waiting to run
Linux-CI / Build vendored-2 (push) Waiting to run
Linux-CI / Build vendored-3 (push) Waiting to run
Linux-CI / Build vendored-4 (push) Waiting to run
Linux-CI / Build vendored-5 (push) Waiting to run
Linux-CI / Build vendored-6 (push) Waiting to run
Linux-CI / Build vendored-7 (push) Waiting to run
Linux-CI / Build vendored-8 (push) Waiting to run
Linux-CI / Build vendored-9 (push) Waiting to run
Linux-CI / Build vendored-10 (push) Waiting to run
Linux-CI / Build vendored-11 (push) Waiting to run
Linux-CI / Build vendored-12 (push) Waiting to run
Linux-CI / Build vendored-13 (push) Waiting to run
Linux-CI / Build vendored-14 (push) Waiting to run
Linux-CI / Build vendored-15 (push) Waiting to run
Linux-CI / Build vendored-16 (push) Waiting to run
Linux-CI / Build vendored-17 (push) Waiting to run
Linux-CI / Build vendored-18 (push) Waiting to run
Linux-CI / Build vendored-19 (push) Waiting to run
Linux-CI / Build vendored-20 (push) Waiting to run
Linux-CI / Build vendored-21 (push) Waiting to run
Linux-CI / Build vendored-22 (push) Waiting to run
Linux-CI / Build vendored-23 (push) Waiting to run
Linux-CI / Build vendored-24 (push) Waiting to run
Linux-CI / Build vendored-25 (push) Waiting to run
Linux-CI / Build vendored-26 (push) Waiting to run
Linux-CI / Build vendored-27 (push) Waiting to run
Linux-CI / Build vendored-28 (push) Waiting to run
Linux-CI / Build vendored-29 (push) Waiting to run
Linux-CI / Build vendored-30 (push) Waiting to run
Linux-CI / Build with OpenSSL Async Job (push) Waiting to run
Linux-CI / Build with OpenSSL Async Job-1 (push) Waiting to run
MacOS-CI / Build (push) Waiting to run
MacOS-CI / Build vendored (push) Waiting to run
MacOS-CI / Build vendored-1 (push) Waiting to run
MacOS-CI / Build vendored-2 (push) Waiting to run
MacOS-CI / Build vendored-3 (push) Waiting to run
MacOS-CI / Build vendored-4 (push) Waiting to run
MacOS-CI / Build vendored-5 (push) Waiting to run
MacOS-CI / Build vendored-6 (push) Waiting to run
MacOS-CI / Build vendored-7 (push) Waiting to run
MacOS-CI / Build vendored-8 (push) Waiting to run
MacOS-CI / Build vendored-9 (push) Waiting to run
MacOS-CI / Build vendored-10 (push) Waiting to run
MacOS-CI / Build vendored-11 (push) Waiting to run
MacOS-CI / Build vendored-12 (push) Waiting to run
MacOS-CI / Build vendored-13 (push) Waiting to run
MacOS-CI / Build vendored-14 (push) Waiting to run
MacOS-CI / Build vendored-15 (push) Waiting to run
MacOS-CI / Build vendored-16 (push) Waiting to run
MacOS-CI / Build vendored-17 (push) Waiting to run
MacOS-CI / Build vendored-18 (push) Waiting to run
MacOS-CI / Build vendored-19 (push) Waiting to run
MacOS-CI / Build vendored-20 (push) Waiting to run
MacOS-CI / Build vendored-21 (push) Waiting to run
MacOS-CI / Build vendored-22 (push) Waiting to run
MacOS-CI / Build vendored-23 (push) Waiting to run
MacOS-CI / Build vendored-24 (push) Waiting to run
StaticLinking / musl (push) Waiting to run
StaticLinking / musl-1 (push) Waiting to run
StaticLinking / msvc-vcpkg (push) Waiting to run
StaticLinking / msvc-vendored (push) Waiting to run
StaticLinking / msvc-vendored-1 (push) Waiting to run
StaticLinking / msvc-vendored-2 (push) Waiting to run
Windows-CI / Build (push) Waiting to run
Windows-CI / Build vendored (push) Waiting to run
Windows-CI / Build vendored-1 (push) Waiting to run
Windows-CI / Build vendored-2 (push) Waiting to run
Windows-CI / Build vendored-3 (push) Waiting to run
Windows-CI / Build vendored-4 (push) Waiting to run
Windows-CI / Build vendored-5 (push) Waiting to run
Windows-CI / Build vendored-6 (push) Waiting to run
Windows-CI / Build vendored-7 (push) Waiting to run
Windows-CI / Build vendored-8 (push) Waiting to run
Windows-CI / Build vendored-9 (push) Waiting to run
Windows-CI / Build vendored-10 (push) Waiting to run
StaticLinking / msvc-vendored-3 (push) Waiting to run
Windows-CI / Build vendored-11 (push) Waiting to run
Windows-CI / Build vendored-12 (push) Waiting to run
Windows-CI / Build vendored-13 (push) Waiting to run
Windows-CI / Build vendored-14 (push) Waiting to run
Windows-CI / Build vendored-15 (push) Waiting to run
Windows-CI / Build vendored-16 (push) Waiting to run
Windows-CI / Build vendored-17 (push) Waiting to run
Windows-CI / Build vendored-18 (push) Waiting to run
Windows-CI / Build vendored-19 (push) Waiting to run
Windows-CI / Build vendored-20 (push) Waiting to run
Windows-CI / Build vendored-21 (push) Waiting to run
Windows-CI / Build vendored-22 (push) Waiting to run
Windows-CI / Build vendored-23 (push) Waiting to run
CodeCoverage / lib unit test (push) Has been cancelled
CodeCoverage / g3mkcert test (push) Has been cancelled
CodeCoverage / g3keymess test (push) Has been cancelled
CodeCoverage / g3proxy test (push) Has been cancelled
CodeCoverage / g3bench test (push) Has been cancelled
CodeCoverage / g3statsd test (push) Has been cancelled
fix static build CI on windows
2025-10-09 22:04:09 +08:00

1.4 KiB

Static Linking

Linux

Install musl

musl is needed to enable static linking.

You can use the following instructions to install musl on Debian:

apt install musl-tools

Install rustc target

Then you need to install the corresponding musl rust target (see rustc --print target-list | grep musl):

rustup target add x86_64-unknown-linux-musl

Compile

Then compile with the features that do not require dynamic linking:

cargo build --target=x86_64-unknown-linux-musl --no-default-features --features vendored-openssl,rustls-ring,quic,vendored-c-ares

Windows

Windows provides both dynamic and static C runtimes.

See C runtime (CRT) and C++ standard library (STL) .lib files.

You can change to use a static runtime by setting -C target-feature=+crt-static rustc flag.

See Static and dynamic C runtimes.

Compile with vcpkg

The environment variable VCPKGRS_TRIPLET need to be set to x64-windows-static first.

vcpkg install --triplet=x64-windows-static openssl c-ares
cargo build --no-default-features --features rustls-ring,quic,c-ares

Compile without vcpkg

cargo build --no-default-features --features vendored-openssl,rustls-ring,quic,vendored-c-ares