【发布时间】:2012-10-16 20:25:54
【问题描述】:
我的问题可以总结如下:
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;
}
生成文件:
all:
gcc -c bar.c
ar -rc libbar.a bar.o
gcc main.c -L. -lbar
输出:
$ ./a.out
foo
所以 main.c 中的弱符号 bar 不会被 bar.c 中的强符号覆盖,因为 bar.c 链接到静态库 libbar.a 中的 main.c。
如何告诉 gcc 让 libbar.a 中的强符号覆盖 main.c 中的弱符号?
【问题讨论】:
标签: c gcc ld weak-linking