我使用GCC并需要定义大量文本,例如
const char* myArray[1000] = {"red", "blue", "green", "yellow", ...};
我有一个指针数组和大堆文本,如"red\0blue\0green\0..."
一些内存。我想更改该文本的内存区域。我使用了__attribute__((section(...)))
GCC指令,但它们只改变了指针的分配。如何更改大文本块的分配?谢谢你的回答。
P.S。抱歉英语不好。
答案 0 :(得分:2)
您可以将-fdata-sections与gcc一起使用。这将为对象文件中的每个全局变量创建一个唯一的部分。
然后,您可以创建一个LdScript文件,该文件将告诉链接器(ld)将这些部分放入所需的内存区域。
匿名字符串位于object-file的.rodata-section中。 LdScript示例代码段:
.memregion1.rodata :
{
Startup.c.obj(.rodata.str1.8)
}
将把startup.c中的str1.8放入memregion1。