背景:如果一个可执行文件有一个在共享对象中定义的外部数据引用,编译器将使用复制重定位并在其.bss 部分中放置一个副本。复制搬迁在本站有详细说明:http: //www.shrubbery.net/solaris9ab/SUNWdev/LLM/p22.html#CHAPTER4-84604
但是,我的问题是:
是否可以通过 GOT 来实现,就像共享对象中的外部数据引用一样?可执行文件可以通过它的 GOT 入口间接访问这个外部代码,并且这个 GOT 入口可以在运行时填充这个符号的真实地址。我不知道为什么 GCC 不这样实现它。副本重定位的好处是什么?