O GCC cria um objeto compartilhado em vez de um binário executável

Eu tenho uma biblioteca que estou construindo. Todos os meus objetos são compilados e vinculados sucessivamente quando eu executo um dos seguintes:ar rcs lib/libryftts.a $^

gcc -shared $^ -o lib/libryftts.so

no meu Makefile. Também consigo instalá-los com êxito no/usr/local/lib Quando eu testo o arquivo com nm, todas as funções estão lá. Meu problema é que quando corrogcc testing/test.c -lryftts -o test && file ./test ougcc testing/test.c lib/libryftts.a -o test && file ./test diz:

test: ELF 64-bit LSB shared object ao invés detest: ELF 64-bit LSB executable como eu esperaria. O que estou fazendo errado?