Keep things separated as it helps in increasing the modularity and force to write good code. Compile time should not be a problem as make only compiles files that have changed.
Tips: Use clang to get faster compile time than gcc and better error/warning messages.
Use clang static analyser for catching bugs that are noticeable easily.
Use thread sanitizer and memory sanitizer to find difficult to diagnose runtime memory errors and race conditions.
If you don't have a compelling reason to use static library then stick to using shared library. If you library is going to be used by several application using shared libraries will help reducing overall system memory usage, faster app load time. Static library does not let your app get all improvements Linux kernel could provide.