Vinculando bibliotecas estaticamente no MinGW

Suponha que eu tenha três arquivos de origem C. Os dois primeiros são LIBs (lib * .a?) E o terceiro é um aplicativo que os utiliza.

O primeiro é (ref):

int re(int i) {
    return i;
}

O segundo é (test.c):

int re(int); // Depends on re.c

int test(int i) {
    return re(i);
}

E o terceiro é (main.c):

#include<stdio.h>

int test(int); // Uses test.c

int main(void) {

    printf("%d\n",test(0));
    return 0;
}

Agora, como posso criar os dois primeiros LIBs de tal forma que permita vinculá-los estaticamente com o aplicativo principal?

Eu sei como criar as DLLs e vinculá-las dinamicamente no meu aplicativo, como:

cc -o re.dll re-compartilhada -Wl, - out-implib = libre.a (para re.c)

cc -o test.dll test.c -L. -lre -shared -Wl, - out-implib = libtest.a (para teste.c)

cc -o main.exe main.c -L. -lest -ltest

Então, como criar LIBs equivalentes para serem vinculados estaticamente dentro do meu binário executável no MinGW e como vinculá-los?

Obviamente, no Windows :)

questionAnswers(2)

yourAnswerToTheQuestion