我正在为我的项目使用 ARM ELF 工具链。我正在开发一个需要独立于位置的引导加载程序,因为它会在重置时自行从闪存重新定位到内存。我已经努力弄清楚如何使用 GNU ARM 工具链编译与位置无关的代码,但似乎无法使其工作。
我尝试对编译器使用 -fpic 和 -fpie 选项,对链接器使用 -pie 选项,但是当我使用这些选项时,编译器会抱怨没有为 .got 或 .plt 部分定义任何部分。我不确定这些部分应该放在哪里,即在 BSS 或 TEXT 中。在谷歌搜索后,我认为我应该只使用 -fpie 但我不确定。
有这方面经验的人可以帮助我。我正在使用 GNU ARM 4.1.1