Marco, o Darcamo está absolutamente correto sobre a compilação... Veja que você não usou a chave -c, dai o gcc vai gerar o executável final, já linkado... Se quiser gerar os .o's individuais terá que usar -c:
gcc -c -o test.o test.c
Mas, os arquivos .o não são executáveis porque não estão linkados com as biblitecas necessárias. Depois de compilar os .c para objetos (.o's), deve linká-los:
gcc -o test test.o
É claro que esse passo intermediário (gerar os .o's) só é útil se você tiver vários módulos .c para compilar... Na linha de comando acima você poderá ter que indicar ao compilador alguma biblioteca em particular para ser linkada (libm.a, por exemplo - neste caso a chave -lm deve ser usada - onde 'm' é o nome da lib. Ou seja libm.a).
[]s
Fred