我有这个简单的 c 代码
当我将它链接为
gcc -g app.c.o -o app -lrt -lpthread -lc
但是如果我们改变链接 libc 和 libthread 的顺序
gcc -g app.c.o -o app -lrt -lc -lpthread
这没用。
我们知道在 FreeBSD 上,libc 中 pthread 函数的存根是弱引用。例如
objdump -T /lib/libc.so.7 | grep pthread_cond_signal
00000000000e2bf0 w DF .text 0000000000000011 FBSD_1.0 pthread_cond_signal
这意味着链接的顺序无关紧要。为什么这样?