If main() is in the first module in the archive, then just cc arch.a suffices to link everything, since the run-time startoff already has a reference to the extern main (_main or whatever). If the archive has a table of contents (4.?BSD or latest AT&T UNIX), then the module containing main() need not even be first in the archive.