non riesco a compilare il seguente frammento di codice con file header:

file main.c
codice:
#include<stdio.h>
#include "funzione.h"
int main (){


	funzione();
	return 0;
}
file funzione.c
codice:
#include<stdio.h>
#include "funzione.h"

void funzione (){

	printf("Hello world");
}
file funzione.h
codice:
void funzione ();
Quando compilo solo il file main.c mi da questo errore: undefined reference to `funzione'

lo provato all'inizio su ampiente IDE poi dal terminatore:
gcc -c main.c
gcc -c funzione.c
gcc -o main.o funzione.o
sempre errori mi da

come si fa a compilare correttamente qando ci sono in mezzo i file header?

grazie in anticipo