我想将一个特定的变量放在它的内存部分的末尾。
如果我有:
文件1.cpp:
__attribute__((section(".mysection"))) char var1[] = "var1";
在另一个文件 2.cpp 中:
__attribute__((section(".mysection"))) char var2[] = "var2";
如何强制 var2
位于 mysection
的末尾?
最佳答案
好吧,我最终采用了完全不同的方法,但我想在这里分享我的最终结论: 我基于 How to fetch the end address of my code
在代码中,必须为变量添加一个extern引用:
extern char var2[];
链接描述文件必须如下编写:
SECTIONS
{
.mysection : {
*(.mysection);
var2 = .;
}
}
INSERT AFTER .mysection
在链接过程中添加链接器脚本(例如 ld -T <PATH_TO_MY_LINKER_SCRIPT>
)
INSERT AFTER
使用了部分,因此我的链接描述文件将添加到默认链接描述文件中。
我必须使用“gold”来链接我的 elf 文件,显然我使用的版本不支持“INSERT AFTER”语法。所以实际的解决方案应该是复制默认的链接器脚本并将我的脚本信息添加到其中。
虽然我还没有测试过,但我仍然希望它能帮助到别人。
关于c++ - 如何在一个部分的末尾放置一个变量(使用 GCC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16751378/