GCC and Clang support compiling the DWARF debugging information to separate .dwo files so that the .o files passed to the linker can remain relatively small. This only works when linking with gold.
We need to compile with -gsplit-dwarf then add -Wl,--gdb-index to the link flags. Anecodotal reports on other projects (e.g. Chromium https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/8tKb9-Wr8gk) show that this can contribute to a 20-80% reduction in link time.
more info https://gcc.gnu.org/wiki/DebugFission