Czy podajesz jako argument dla gcc opcję -o nazwa_pliku ?
Cytat
gcc -o wykonywalny zrodlowy.c
-o daje Ci w wyniku plik wykonywalny (ELF Executable), inaczej dostaniesz jedynie plik a.out, który jest jedynie rezultatem kompilacji i linkowania, ale nie jest programem wykonywalnym.