为了账号安全,请及时绑定邮箱和手机立即绑定

GCC -fPIC选项

GCC -fPIC选项

C++
侃侃尔雅 2019-10-04 14:33:13
我已经阅读了GCC的代码生成约定选项,但不了解“生成与位置无关的代码(PIC)”的含义。请举一个例子来解释我的意思。
查看完整描述

3 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

我将尝试以一种更简单的方式来解释所讲的内容。

每当加载共享库时,加载程序(操作系统上的代码会加载您运行的任何程序)都会根据对象的加载位置更改代码中的某些地址。

在上面的示例中,非PIC代码中的“ 111”由加载程序在首次加载时写入。

对于非共享对象,您可能希望这样,因为编译器可以对该代码进行一些优化。

对于共享对象,如果另一个进程想要“链接”到该代码,则他必须将其读取到相同的虚拟地址,否则“ 111”将没有意义。但是该虚拟空间可能已在第二个过程中使用。


查看完整回答
反对 回复 2019-10-04
  • 3 回答
  • 0 关注
  • 829 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信