如何使用LD链接器命令文件在特定地址处放置常量?

ejw*_*ipp 5 c gcc ld

我正在使用基于gcc的工具链在嵌入式处理器上开发ac应用程序。在我的应用程序中,我需要在特定的内存位置放置一个标志。我需要链接器命令文件语法的帮助来完成此任务。

par*_*vus 5

在您的C文件中,编写如下内容:

static int flag __attribute__ ((section (".flag"))) __attribute__ ((__used__)) = 6;
Run Code Online (Sandbox Code Playgroud)

在您的自定义链接描述文件中,将.flag添加到所需部分:

_flag_start = 0x00001234;

.flag _flag_start :
{
  KEEP(*(.flag)) ;
}
Run Code Online (Sandbox Code Playgroud)

确保将其添加到正确的位置,因为位置指针只能增长。位置指针将设置为_flag_start + [size of your flag]在此块之后,这意味着所有后续部分都将放置在该地址或更高的位置。

当然,请阅读并使用提供的David Grayson手册。

  • 感谢小矮人的帮助。除了“KEEP”指令给我一个链接器错误之外,您的解决方案有效。也许是因为我正在使用的工具集。一旦我把它去掉,我就可以开始做生意了。 (2认同)