Skip to content

A static build of iperf3 to do network testing on remote servers.

License

Notifications You must be signed in to change notification settings

userdocs/iperf3-static

Repository files navigation

iperf3 static builds

Built on:

  • Alpine linux edge via arch emulation
  • Windows via Github Actions runners for x86_64

Static binaries are available here: https://github.com/userdocs/iperf3-static/releases/latest

Build Platforms

  • Alpine - all supported architectures
  • Windows - x86_64

Alpine linux as the host OS

Builds are created using https://github.com/multiarch/qemu-user-static and arch specific docker images detailed in the table below.

Alpine Arch Docker platform arch Docker hub image
armhf linux/arm/v6 arm32v6/alpine:edge
armv7 linux/arm/v7 arm32v7/alpine:edge
aarch64 linux/arm64 arm64v8/alpine:edge
ppc64le linux/ppc64le ppc64le/alpine:edge
s390x linux/s390x s390x/alpine:edge
x86 linux/i386 i386/alpine:edge
x86_64 linux/amd64 amd64/alpine:edge

Windows

Static Cygwin builds created via cygwin64 using this action

https://github.com/cygwin/cygwin-install-action

Credits and acknowledgements

Some awesome people's contributions have helped inspire the creation of a Github action for Windows build and release. It would not have happened withouth the contributions of these users in providing iperf3 builds for Windows. So thank you, to you both.

They are available for x86_64 in two versions.

  • basic (without openssl)
  • openssl

www.neowin.net via budman

https://github.com/ar51an/iperf3-win-builds via cryptanalyst

I used the budman builds originally before making my own for another project.

Generic Build dependencies

apk add build-base pkgconf autoconf automake curl libtool git perl openssl-libs-static openssl-dev linux-headers

Debian linux

apt install -y build-essential pkg-config automake libtool libssl-dev git perl

Cygwin packages

Without openssl

automake,gcc-core,gcc-g++,git,libtool,make,pkg-config

With openssl

automake,gcc-core,gcc-g++,git,libtool,make,pkg-config,libssl-devel,zlib-devel

Generic Build Instructions

Clone the git repo - linux + Cygwin

git clone https://github.com/esnet/iperf.git ~/iperf3 && cd ~/iperf3

Bootstrap - If you cloned the repo

./bootstrap.sh

Configure - linux + Cygwin

Note: Cygwin requires requires compiling openssl and zlib static libs to link statically. Otherwise you compile dynamically

Static

./configure --disable-shared --enable-static-bin --prefix=$HOME

Dynamic

./configure --prefix=$HOME

Cygwin openssl requires compiling openssl and zlib

Build - linux + Cygwin

make -j$(nproc)
make install

Check the linking was done properly

ldd ~/bin/iperf3

Version

Use this command to check the version.

~/bin/iperf3 -v

Will show something like this.

iperf 3.10.1 (cJSON 1.7.13)
Optional features available: CPU affinity setting, IPv6 flow label, TCP congestion algorithm setting, sendfile / zerocopy, socket pacing, authentication, bind to device, support IPv4 don't fragment

Use the static binaries from this repo

Download and install to the bin directory of your local user (for root this may not be in the $PATH)

Pick the platform URL you need:

i386 / x86

mkdir -p ~/bin && source ~/.profile
wget -qO ~/bin/iperf3 https://github.com/userdocs/iperf3-static/releases/latest/download/iperf3-i386
chmod 700 ~/bin/iperf3

amd64

mkdir -p ~/bin && source ~/.profile
wget -qO ~/bin/iperf3 https://github.com/userdocs/iperf3-static/releases/latest/download/iperf3-amd64
chmod 700 ~/bin/iperf3

arm32v6

mkdir -p ~/bin && source ~/.profile
wget -qO ~/bin/iperf3 https://github.com/userdocs/iperf3-static/releases/latest/download/iperf3-arm32v6
chmod 700 ~/bin/iperf3

arm32v7

mkdir -p ~/bin && source ~/.profile
wget -qO ~/bin/iperf3 https://github.com/userdocs/iperf3-static/releases/latest/download/iperf3-arm32v7
chmod 700 ~/bin/iperf3

aarch64 / arm64

mkdir -p ~/bin && source ~/.profile
wget -qO ~/bin/iperf3 https://github.com/userdocs/iperf3-static/releases/latest/download/iperf3-arm64v8
chmod 700 ~/bin/iperf3

ppc64le

mkdir -p ~/bin && source ~/.profile
wget -qO ~/bin/iperf3 https://github.com/userdocs/iperf3-static/releases/latest/download/iperf3-ppc64le
chmod 700 ~/bin/iperf3

s390x

mkdir -p ~/bin && source ~/.profile
wget -qO ~/bin/iperf3 https://github.com/userdocs/iperf3-static/releases/latest/download/iperf3-s390x
chmod 700 ~/bin/iperf3

Windows builds required being bundled with Cygwin dlls to work so these are not single static binaries. They have a directory structure like this.

iperf3
    |___bin
    |___include
    |___lib
    |___share

Windows x64 no openssl

https://github.com/userdocs/iperf3-static/releases/latest/download/iperf3-amd64-win.zip

Windows x64 with openssl

https://github.com/userdocs/iperf3-static/releases/latest/download/iperf3-amd64-openssl-win.zip

Check the version:

~/bin/iperf3 -v