These are 32-bit architectures, right? Then the issue is probably not that we're running out of physical memory, but that we're running out of virtual memory. There is a limit of a little bit under 4G per process, regardless of the available physical memory. You could try e.g. building without debug info, or if this is LTO, reduce the number of parallel LTO threads. No idea how one would do that in Rust, but all linkers have options for that: https://clang.llvm.org/docs/ThinLTO.html#controlling-backend-parallelism. Note that the memory consumption of LTO grows roughly linear with the number of threads, see e.g. https://blog.llvm.org/2016/06/thinlto-scalable-and-incremental-lto.html.