Credo che il problema si risolva facendo uso del makefile. Il makefile è un file particolare che "istruisce" il compilatore ed linker in fase di compilazione e di linking.
Non sono pratico dei makefile, ma se cerchi su google sicuramente trovi qualcosa.
Questo è un esempio di un makefile che abbiamo usato noi per la complazione di un progetto in C che faceva uso di più file che richiamavano, fra di loro, funzioni:
codice:
smallshell: userin.o runcommand.o procline.o
cc -o smallshell userin.o runcommand.o procline.o
userin.o : userin.c smallsh.h
cc -c userin.c
runcommand.o : runcommand.c smallsh.h
cc -c runcommand.c
procline.o : procline.c smallsh.h
cc -c procline.c
Da quello che ricordo, sulla prima linea si dice quale sia il progetto che verrà compilato (in questo caso viene prodotto un file eseguibile che si chiama smallshell), facendo uso dei codici oggetto prodotti dalle compilazioni elencate nelle righe successive.
Per effettuare la compilazione si usa il comando make dalla posizione in cui si trova il makefile (make si arrangia a leggere il file "makefile" e ad eseguire la compilazione).
Di più nin zò 
Ciao.