Gcc 如何使用GNU ARM工具链生成与位置无关的代码?

Gcc 如何使用GNU ARM工具链生成与位置无关的代码?,gcc,arm,cross-compiling,gcc4,Gcc,Arm,Cross Compiling,Gcc4,我正在为我的项目使用ARM ELF工具链。我在一个引导加载程序,需要是位置独立的工作,因为它将重新定位它自己从闪存到ram复位后。我曾试图找出如何使用GNU ARM工具链编译位置无关的代码,但似乎无法使其正常工作 我曾尝试为编译器使用-fpic和-fpie选项,为链接器使用-pie选项,但当我使用这些选项时,编译器抱怨没有为.get或.plt节定义任何节。我不确定这些部分应该放在哪里,即BSS或文本中。在谷歌搜索了这个之后,我想我应该只使用-fpie,但我不确定 有这方面经验的人能帮助我吗。我正

我正在为我的项目使用ARM ELF工具链。我在一个引导加载程序,需要是位置独立的工作,因为它将重新定位它自己从闪存到ram复位后。我曾试图找出如何使用GNU ARM工具链编译位置无关的代码,但似乎无法使其正常工作

我曾尝试为编译器使用-fpic和-fpie选项,为链接器使用-pie选项,但当我使用这些选项时,编译器抱怨没有为.get或.plt节定义任何节。我不确定这些部分应该放在哪里,即BSS或文本中。在谷歌搜索了这个之后,我想我应该只使用-fpie,但我不确定


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

您可以通过向ARM linux gnueabi gcc提供-mapcs reentrant选项和向其他汇编程序提供-Wa,-K选项来生成位置独立代码[PIC]。 比如:

armlinux-gnueabi-gcc-mapcs可重入-Wa,-K文件。。

有人吗?很难接受这里没有人遇到过这个问题。文档中说这与
-fPIC
的结果相同。
arm-linux-gnueabi-gcc <other option> -mapcs-reentrant -Wa, -K <other option> files..