Testing the new "gold" linker from binutils
By Voyageur on Wednesday 9 April 2008, 11:09 - Gentoo - Permalink
After reading Diego's post on linkers, I got curious (and interested) by this new linker (also mentioned in LWN and other sites).
Developed by Ian Lance Taylor (from Google), the gold linker is now in binutils, and promises link times divided at least by 5. The code I develop at work is a big C++ project, and takes a looooot of time linking indeed (especially in debug...). So let's see how to try this new linker
First, a big warning: this is still heavily experimental, I do not recommend
to use it for your system itself. It only works on x86/amd64, does NOT link a
kernel correctly for now. Keep a stable binutils, and use it for all your
emerge operations. UPDATE: see Diego's
warnings too, Remember that I only test gold on C++ debug binaries, not on
system packages or other important compilations.
You have been warned
Now let's see how to install a gold-enabled binutils
in parallel with your stable one:
- First step: enable multislot for binutils (so you'll have both unstable/gold binutils and stable binutils available with binutils-config)
# echo "sys-devel/binutils multislot" >>
/etc/portage/package.use
# emerge -av binutils- Unmask an unstable binutils ebuild, and compile it with gold enabled (thanks to EXTRA_ECONF feature)
# echo "=sys-devel/binutils-2.18.50.0.6 **" >>
/etc/portage/package.keywords
# EXTRA_ECONF="--enable-gold" emerge -av
'=sys-devel/binutils-2.18.50.0.6'- Use binutils-config to switch between your stable binutils, and gold-enabled 2.18.50.0.6 (ld --version will say "GNU gold ...")
And now back to work with greatly reduced linking times, yay!
Comments
So in your project do you really get 5x less time ?
I did not have time yet for thorough benchmarks (release time is not good for these), but for example one of the programs now links in about 15-20 seconds, instead of more than a minute. So it's 3x-4x faster for sure