1. A method of compiling a source code program into a plurality of object code files for a plurality of target processors comprising the steps of: dividing the source code program into a plurality of functional modules; compiling each functional module into a plurality of target object versions, each target object version for one of the target processors; for each functional module, merging the target object versions by deleting any target object versions having similar contents to another target object version; and after merging, forming a composite object code file of all function module target object versions.