Here's the traditional, simple way of building a program:
$ cc -c -g prog.c mod1.c mod2.c mod3.c $ cc -o prog_nolib prog.o mod1.o mod2.o mod3.o
(Can equivalently use static library)
Disadvantages:
If a change is required (perhaps a bug fix) to an object module, then all executables using that module must be re-linked in order to incorporate the changes.
(C) 2006, Michael Kerrisk