Как сделать, чтобы gcc-ссылка была сильным символом в статической библиотеке, чтобы перезаписать слабый символ?
Моя проблема может быть кратко изложена в следующем:
bar.c:
#include
void bar() {
printf("bar\n");
}
main.c:
#include
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
Выход:
$ ./a.out
foo
Таким образом, слабый символ bar в main.c не перезаписывается сильным символом в bar.c из-за того, что bar.c связан с main.c в статической библиотеке libbar.a.
Как я могу сказать gcc сделать сильный символ в libbar.a перезаписать слабый символ в main.c?