Я хочу создать как статическую, так и совместно используемую версию одной и той же библиотеки, как описано здесь .Однако исходные коды компилируются дважды, по одному для каждой версии, что не является обязательным.Есть ли способы избежать этого?
Зависит от платформы. По крайней мере, в Linux вам нужно использовать другие флаги компилятора для создания позиционно-независимого (совместно используемой библиотеки), чем обычный (программный или статический) код.