Como fazer o gcc ligar um símbolo forte na biblioteca estática para sobrescrever o símbolo fraco?

Meu problema pode ser resumido no seguinte:

bar.c:

#include <stdio.h>

void bar() {
    printf("bar\n");
}

main.c:

#include <stdio.h>

void __attribute__((weak)) bar() {
    printf("foo\n");
}

int main() {
    bar();
    return 0;
}

Makefile:

all:
    gcc -c bar.c
    ar -rc libbar.a bar.o
    gcc main.c -L. -lbar

Saída:

$ ./a.out
foo

Portanto, a barra de símbolo fraco em main.c não é sobrescrita pelo símbolo forte em bar.c devido a bar.c estar ligada a main.c em uma biblioteca estática libbar.a.

Como posso dizer ao gcc para fazer o símbolo forte em libbar.a para sobrescrever o símbolo fraco em main.c?

questionAnswers(2)

yourAnswerToTheQuestion