I wish there was a GUI/visualization for all this.<p>Everything is relatively simple to understand when visualized like it would be on a lecture slide. But reading about it in manpages and blog articles is overwhelming.
I thought kernel modules were elf files created by relocatable links but that seems a strange omission from the examples list if so, may be misremembering.<p>ld -r elf -o out should be a no-op on well formed input. It means create a file that will be passed to another linker invocation later. So it's a means of composing together N object files to get one file that you can use in place of those N. A little like a library.<p>I structured builds like that for a while. Source foo.c to foo.o, directory bar to bar.o containing whatever was in that directory relocatably-linked together, possibly internalising symbols as it goes.