<p>I'm pretty new to the C++ build flow, and I'm thinking of switching to use partial linking for my libraries instead of creating <code>ar</code> archives. I'm hoping to reduce link time in an inevitable final compilation step that I have, and I figure partial linking some libraries once could save me time over linking everything in that final step.</p>

<p>Is what I'm describing possible? I figure it should be something along the lines <code>ld -Ur -o mylib.o [components]</code>. Are there important build considerations that I'm not taking into account?</p>

You lose an important effect of having the object files in an
```
ar
```
archive, which is that only the referenced objects will be linked in.
If you have both
```
foo.o
```
with the symbol
```
foo
```
and bar.o with the symbol
```
bar
```
in an
```
ar
```
archive, and only reference the
```
foo
```
symbol, only
```
foo.o
```
would be linked in. If you instead do a partial link, the contents of both will end up in the executable, even if
```
bar
```
is never referenced anywhere.
You could also try a faster linker, like
gold
.