A linking order forming section forms linking orders of intermediate objects. A linker starting section starts a linker based on the linking order that is formed by applying a genetic algorithm, etc. to form an executable object. A comparing section compares a program size of the formed executable object with the minimum value stored in a storing section. If the program size is smaller than the minimum value, the storing section stores this program size as the minimum value and also stores the linking order at that time. The linking order that can provide the minimum program size can be obtained effectively without the manual intervention by repeating a series of steps by using a repeating section.