1

我正在为我的项目使用 ARM ELF 工具链。我正在开发一个需要独立于位置的引导加载程序,因为它会在重置时自行从闪存重新定位到内存。我已经努力弄清楚如何使用 GNU ARM 工具链编译与位置无关的代码,但似乎无法使其工作。

我尝试对编译器使用 -fpic 和 -fpie 选项,对链接器使用 -pie 选项,但是当我使用这些选项时,编译器会抱怨没有为 .got 或 .plt 部分定义任何部分。我不确定这些部分应该放在哪里,即在 BSS 或 TEXT 中。在谷歌搜索后,我认为我应该只使用 -fpie 但我不确定。

有这方面经验的人可以帮助我。我正在使用 GNU ARM 4.1.1

4

1 回答 1

0

您可以通过向其他汇编程序提供-mapcs-reentrant选项arm-linux-gnueabi-gcc和选项来生成与位置无关的代码 [PIC] 。-Wa,-K喜欢:

arm-linux-gnueabi-gcc <other option> -mapcs-reentrant -Wa, -K <other option> files..
于 2015-04-08T10:55:30.083 回答