Mumble VOIP Server v1.5.0 git revision 414ab61 x64 Linux - static build https://github.com/mumble-voip/mumble https://www.mumble.info/ Built by DDS Central This is a fully static build of Mumble VOIP server. Vanilla git source tree was used, nothing was modified. It should run on any x64 distro, provided the kernel is not extremely ancient (< 3.2). Usage is: murmurd --- FOR DEVELOPERS/TINKERERS: Build info and (very) rough build instructions --- Since mumble no longer provides static builds due to their vcpkg-based build environment "not being entirely static". I did not feel like spinning up another Docker container just for murmur, so I've decided to have a go at making a static build myself as a challenge. And here you go. Yes, the executable is over 75 MB in size but is fully portable and has absolutely zero dependencies apart from the kernel. Build system: Ubuntu 22.04 Extra build scripts used for build are provided in scripts.tar.gz. Paths used during build (build scripts rely on these to work): VCPKG path: /home/dds/vcpkg (symlink to /mnt/build/vcpkg) Mumble build path: /home/dds/Build/mumble (symlink to /mnt/build/Build/mumble) Local libs prefix: /usr/local This is built according to their instructions for static builds with some extra steps to get rid of all the dynamic dependencies. Since Ubuntu mostly does not provide static library versions, all the dependend dynamic libraries (including glibc) need to be rebuilt as static. To determine which libs needed to be rebuilt, I simply built mumble according to their static build instructions, then ran ldd on the resulting binary. 1. First, the static libs I had to rebuild these as static: glibc 2.35 (options: --enable-static-nss --enable-static-pie --disable-ncsd --prefix=/usr/local/lib/glibc-static) bind9 (not sure if necessary) libcap kerberos5 avahi dbus keyutils systemd lzma zstd lz4 gcrypt This list is incomplete. I also added some extra libs to my vcpkg, for a complete list of libs used, see linker command in build-server-static.sh from the script tarball. Building some of these libs as static may be a bit cumbersome, especially libs which depend on Kerberos as configure scripts almost never include all the need Kerberos static libs in Makefiles they produce. Additional CFLAGS/LDFLAGS may be needed to get everything to link. 2. Build configuration 2.1. To create build configuation, run build.sh from the scripts tarball (extract the tarball to the source directory). ./build.sh 2.2. To force use of all static libraries: cd build ../staticize.sh 2.3. Run make make mumble-server This command will compile all the source code but the link step WILL FAIL because mumble's build system is not setup correctly. To get everything to link, I ran cmake with verbosity on to extract the linker command and ammended this command to include the missing libraries. 3. Link static executable Run from build directory root: ./build-server-static.sh This will run my ammended linker command. If everything goes well, you should get a static mumble-server binary in the "build" folder. If you get any missing file errors, make sure you have all the libs installed. --- Additional notes --- To setup vcpkg build environment, follow the static build instructions provided in mumble's documentation. vcpkg requires a lot of packages installed on the host OS for the mumble's dependency script to succeed You can use this script https://github.com/microsoft/vcpkg/blob/master/scripts/azure-pipelines/linux/provision-image.sh to install the dependencies. I would comment out everything after "apt-get" line though as you definitely will not need Haskell or CUDA. Some packages will not install on Ubuntu 22.04 (IIRC: liblttng-ust0, libicu66), they can be safely skipped. If you still get vcpkg build errors after installing all the dependent host packages, you'll have to fix them the hard way: read log files, check which header, library, etc. is missing and install it using apt-get or build it from source code. I did not document all the steps precisely as a lot of tinkering and workarounds were required to get everything to work. Ideally, it would be best to automate the entire build process from start to finish so Mumble's authors could fix their build system to produce true static builds. If you want to re-create my build (which is more than welcome) and need advice, I can be reached via e-mail: dds[alpha]ddscentral.org