We regret to have to announce that the FiveM/FXServer Linux server builds are considered an endangered species. This is due to the following reasons:
- Alpine dropped
libc++packages and didn’t update
clangpackages for quite some time. This broke our build as they no longer provide
gccis unsuitable for compiling FiveM codebase due to bugs with advanced C++ features, and insufficient error reporting to write code around it. This code compiles fine with both
cl, meanwhile even GCC 8.2.0 does not work.
libstdc++was long-unsuitable for building FiveM, now does work at compile-time but there’s runtime errors due to TLS models,
RTLD_LOCALand Mono, so any
libstdc++build of FiveM would be unable to have Mono work.
libc++does handle this properly.
- Other distributions (non-Alpine) are not suited for distribution as a minimal root filesystem + ‘portable’ binary (not dependent on any system files/libraries), since they either use
glibc(which depends on a hardcoded prefix), are too large, or similarly don’t ship dependencies we require (
libcurlworking with OpenSSL/mbedTLS since
nodejsdoes not build with
musldoes not support symbol versioning).
- In addition,
breakpaddoes not build with
bionic), so we can’t do any server crash reporting, so Linux builds are useless for helping reporting any server issues. Also, performance profilers are markedly inferior to ETW on Windows, and
gdbbreaks with our
muslsetup and shows ‘no shared libraries loaded’ when clearly having shared libraries loaded. This has made Linux a horrible experience for server owners experiencing any uncommon issues, as we literally can’t get any data off of their issue reports.
If anyone here happens to have sufficient experience with dealing with portable Linux toolchains, can perhaps nudge the Alpine maintainers to mainline
libc++ again (or update LLVM to 7.0, see a recent pull request by an Alpine community member), or otherwise knows how to fix this, help would be very appreciated.
It is recommended to move servers to Windows to maintain service continuity, and have the ability to upload dumps and other diagnostics due to the superior runtime instrumentation tooling existing on the Windows platform.
For now, we are investigating our options when it comes to reviving the Linux builds.