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