Dati i seguenti sorgenti:

mat.c (modulo principale) che include cach.c
cach.c che include hello.h, hello.c, vect.h, cach.h, math.h
hello.c che include hello.h, common.h, vect.h, math.h
ecco i miei passi di compilazione:

gcc -c hello.c -lm
gcc: -lm: linker input file unused because linking not done
gcc -c cach.c -lm
gcc: -lm: linker input file unused because linking not done
gcc -c mat.c

gcc -o prova mat.o cach.o hello.o -lm
hello.o: (.bss+0x0): multiple definition of `min_or_mult'
mat.o: (.bss+0x0): first defined here
.
.
./usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
-
-
mat.c: (.text+0x488): undefined reference to `sqrt'
.
.
collect2: ld returned 1 exit status
Ora capisco che ci sono stati problemi di linking, ma vorrei innanzitutto capire se i passi di compilazione sono corretti...
Grazie.

EDIT:
-------------------
gcc -o prova mat.o cach.o -lm
Cioè senza hello.o, riesco a creare il file prova e funziona se inserisco tra i parametri file dati di 5/6 MB, con uno di 12 MB invece inizia l' esecuzione correttamente e poi fallisce restituendo Segmentation fault (core dumped)

-------------------