GCC crea un objeto compartido en lugar de un binario ejecutable

Tengo una biblioteca que estoy construyendo. Todos mis objetos se compilan y vinculan sucesivamente cuando ejecuto cualquiera de:ar rcs lib/libryftts.a $^

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

en mi Makefile También puedo instalarlos con éxito en/usr/local/lib Cuando pruebo el archivo con nm, todas las funciones están ahí. Mi problema es que cuando corrogcc testing/test.c -lryftts -o test && file ./test ogcc testing/test.c lib/libryftts.a -o test && file ./test dice:

test: ELF 64-bit LSB shared object en lugar detest: ELF 64-bit LSB executable como era de esperar ¿Qué estoy haciendo mal?