2

我知道两者都用于制作可以放置在不同位置的代码,但是它们是如何工作的,为什么?

4

1 回答 1

2

对于初学者来说,它们是工具链不同部分的选项:

  • -fpic并且-fPIC是生成与位置无关的代码的 GCC 选项。这会影响选择的实际指令,以使代码无论位于内存中的什么位置都可以运行。这需要操作系统的动态加载器的支持才能真正使它在加载后就可以运行。
  • -r是一个链接器选项,使它发出可重定位的代码,即以后可以再次链接的代码。这是 ld 对增量链接的支持的一部分。

我认为它们的用法不会重叠,您可以在不使用ld -r.

于 2016-11-23T14:58:09.417 回答