If you're unsure, I'd go with single binary. It'll be easier to work with, and truthfully, if you don't have a need for dynamic libraries then it's probably not a good idea to use them. I'm not much of an OS programmer, but as far as I know the main need for dynamic libraries is to have code shared between different programs without duplicating it. A specific use case I can remember, IIRC, is that Half-Life and Half-Life 2 loaded .dlls for mods, but that's far from the only way to implement mods. Especially with today's abundance of scripting languages.