C: Criando biblioteca estática e vinculando usando um Makefile

estou tentandoentender bibliotecas estáticas e compartilhadas.

Quero fazer o seguinte para criar um makefile que separa a compilação e a vinculação, de modo que uma biblioteca estática seja criada e vinculada na formação do executável estático final.

Eu tenho o seguinte código para o Makefile, mas estou recebendo o seguinte erro

Makefile:13: *** missing separator. Stop.

Mas também estou tentando entender como realmente vincular / criar bibliotecas.

Se eu executar os comandos depoisline 12 no terminal eles trabalham, mas não no makefile.

myProgram: main.o addSorted.o freeLinks.o
    gcc -lm -o myProgram main.o addSorted.o freeLinks.o

main.o: main.c
    gcc -O -c -lm main.c main.h

addSorted.o: addSorted.c addSorted.h
    gcc -O -c -lm addSorted.c

freeLinks.o: freeLinks.c freeLinks.h
    gcc -O -c -lm freeLinks.c

ar rc libmylib.a main.o addSorted.o freeLinks.o    //Error Line

ranlib libmylib.a

gcc -o foo -L. -lmylib foo.o

clean:
    rm -f myProgram main.o addSorted.o freeLinks.o

Além disso, se você puder ajudar a melhorar o código, eu realmente aprecio isso.

questionAnswers(2)

yourAnswerToTheQuestion