|
As you know, linking consists of merging two or more objects. It should follow without much discussion, then, that in order to link you must have all the objects you want to link together, and the merging of those objects must take place in the same process.
The way the GNU linker works is taking all objects and merging them in one big lump. That makes it inherently unparallelizable (which I figure is what you're looking for). However, by splitting the task up into smaller bits--e.g. linking the two smallest objects until only one remains--it becomes parallelizable, but you also do more linking than if you just link it all at once. I believe this process is what's meant by `incremential linking'.
My first intuition would be to try to link in a kind of merge-sort'ish way, but I may be way off here.
In any case, I think the way forward--assuming your final product is *one* object--is with incremential linking. Research that.
In case your final product is more than one object, you can of course parallellize by linking each object on a separate box (but I figure you don't have 20 objects). If you can't parallelize enough, again look into incremential linking.
I must admit I'm more or less pulling a brain fart out of my ass here, so please do your own research. I hope this will serve you well as a starting pointer, though.
|