Tente vincular a biblioteca após o arquivo de origem, como
gcc a.c -lmongoc
. Isso ocorre porque você está usando um vinculador tradicional de passagem única, que espera satisfazer as dependências com objetos subsequentes, não anteriores, especificados na linha de comando.