这是关于 GNU Linker 的。
我有一个(可以说)名为的变量myVar
。现在我希望我的变量被放置在内存中的某个地址。
我使用的编译器有一个__attribute__ ((blablabla))
这样就可以了。不过我决定使用链接描述文件。
从现在开始,我设法将变量放置在链接器脚本中的某个地址处,如下所示:
myVar = 0xDEAD;
它确实有效。问题是链接器很愚蠢,偶尔会在我的地址上部署其他变量。两者在某种程度上都表现得像是在union
.
我认为我需要以某种方式告诉链接器这个长度的地址已被占用,不应该被触及。
无论如何,我想你明白了。有什么帮助吗?
我将开始合并 c 源代码和链接器。
在链接器脚本中定义一个新部分,例如:
MEMORY
{
...
my_data (rwx) : ORIGIN = your_start_addr, LENGTH = section_length
}
SECTIONS
{
/* ... */
.myVarSection section_address :
{
KEEP(*(.mySection))
} > my_data
/* ... */
}
然后您可以在源文件中定义变量,如下所示:
uint16_t __attribute__((section (".mySection"))) myVar = 0xDEAD;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)