Senza dubbio sotto linux io userei il gcc, e' il compilatore nativo di questo linguaggio, per compilare un programma C senza troppi sotterfugi fai:
gcc -Wall file1.c file2.c file3.c -o nomeEseguibile
-Wall serve per segnalarti i warning
-o per dare al programma un nome diverso da a.out
come guide non saprei che cosa consigliarti, io di solito uso i libri, le guida online le utilizzo proprio per cose piu specifiche rispetto al C di base.
un buon libro e':
Linguaggio C, Principi di programmazione e manuale di riferimento: Brian W Kernighan, Dennis M. Ritchie ( seconda edizione ) Casa editrice: Pearson