Linux / gcc:null地址" 00000000"使用pthread编译器选项

时间:2012-06-21 14:52:03

标签: c linux gcc pthreads

我用pthreads编译了一个共享库。当我使用pthread选项进行编译时,为什么地址是“00000000”?那是什么意思 ? pthread_create是否嵌入到二进制文件中?

(无论如何,两种方法都按预期工作)

这是带-lpthread

的objdump输出
00000000      DF *UND*  00000aa5  GLIBC_2.1   pthread_create

这是使用-pthread

的objdump输出
00000000      D  *UND*  00000000              pthread_create

1 个答案:

答案 0 :(得分:1)

它还没有重新安置。

现代操作系统上的可执行文件通常使用偏移而不是直接地址。这样,您可以在任何地址加载可执行文件,但您需要为此处理所有偏移量。每种可执行格式都有特殊部分,用于指示重定位的内容和方式(例如,{ELF格式的.reloc)。

有关重新定位herehere的更多信息和链接。