Erro de símbolos indefinidos ao usar um arquivo de cabeçalho

Estou recebendo o seguinte erro e não consigo descobrir o que estou fazendo de errado.

$ gcc main.c -o main

Undefined symbols:
  "_wtf", referenced from:
      _main in ccu2Qr2V.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

main.c:

#include <stdio.h>
#include "wtf.h"

main(){
    wtf();
}

wtf.h:

void wtf();

wtf.c:

void wtf(){
    printf("I never see the light of day.");
}

Agora, se eu incluir a função inteira no arquivo de cabeçalho, em vez de apenas a assinatura, ela estará em conformidade, então eu sei que wtf.h está sendo incluído. Por que o compilador não vê o wtf.c? Ou eu estou esquecendo de alguma coisa?

Saudações.