在链接中,运行时地址和可重定位目标文件的.text(机器代码)部分中的地址之间有什么区别?

pewpew_beepboop

我正在学习有关立即链接(自学)的知识,并且在理解某些概念时遇到了一些麻烦。

在对源代码文件进行预处理,编译和汇编之后,您将获得具有ELF格式(WLOG)的可重定位目标文件。在此____。o文件中,有一个.text节,其中包含各个源代码的机器代码。

此机器代码是否对应于输入文件中代码的运行时地址?就像如果要在何处运行机器代码(假设没有未解决的外部引用)那样,代码的运行时配置文件会与此处的机器代码匹配吗?

如果是这样,可以肯定地说此代码中的符号引用指向其相应符号的运行时地址吗?

我需要知道这一点,以便更好地了解在此过程之后直接发生的链接过程。

受雇于俄罗斯

此机器代码是否对应于输入文件中代码的运行时地址?

没有。

不能,因为单个.o文件的代码知道将哪些其他目标文件链接到主可执行文件中。假设foo.o说“我想在地址0x123000”,然后bar.o说“我想在地址0x123004”。他们显然不能都在同一地址。

“最终”运行时地址由链接器确定,该链接器收集所有不同的.o文件,解析它们之间的引用,并在内存中布置最终的可执行文件。(即使这不是一个完整的故事,因为共享库和与位置无关的可执行文件会使答案更加复杂。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档