我正在为我的项目使用ARM ELF工具链。我正在开发一个需要独立于位置的引导加载程序,因为它会在重置时将其自身从flash重定位到ram。我已经尽力弄清楚如何使用GNU ARM工具链编译与位置无关的代码,但似乎无法使其工作。
我已经尝试为编译器使用-fpic和-fpie选项,并为链接器使用-pie但是当我使用这些选项时,编译器会抱怨没有为.got或.plt部分定义任何部分。我不确定这些部分应该去哪里,即BSS或TEXT。在谷歌搜索之后,我想我应该只使用-fpie,但我不确定。
有经验的人可以帮助我。我正在使用GNU ARM 4.1.1
答案 0 :(得分:0)
您可以通过向-mapcs-reentrant
提供arm-linux-gnueabi-gcc
选项并向其他汇编程序提供-Wa,-K
选项来生成位置无关代码[PIC]。
喜欢:
arm-linux-gnueabi-gcc <other option> -mapcs-reentrant -Wa, -K <other option> files..