无法使用GCC将特殊节映射到图像箱中的指定位置
我在我的程序中定义了一个特殊的数据部分,如下所示:无法使用GCC将特殊节映射到图像箱中的指定位置,gcc,Gcc,我在我的程序中定义了一个特殊的数据部分,如下所示: const qlEntry GADLENTRY __attribute__((section(".initdata"))) = { //... } 我想把这个特殊的部分放在图像箱的标题里 我的.ld文件是这样写的 MEMORY { rom (rx) : ORIGIN = 0x08540000, LENGTH = 0x100000 ram (rwx) : ORIGIN = 0xA0200000, LENGTH = 0
const qlEntry GADLENTRY __attribute__((section(".initdata"))) =
{
//...
}
我想把这个特殊的部分放在图像箱的标题里
我的.ld文件是这样写的
MEMORY
{
rom (rx) : ORIGIN = 0x08540000, LENGTH = 0x100000
ram (rwx) : ORIGIN = 0xA0200000, LENGTH = 0x200000
}
SECTIONS
{
. = 0x08540000;
.rodata :
{
*(.initdata)
*(.rodata)
}
.data :
{
*(.data)
}
.bss :
{
*(.bss)
}
text :
{
*(.text)
}
}
}
但是在构建之后,我在.map文件中看到:
.initdata 0x0854b304 0x2c
.initdata 0x0854b304 0x2c ql_Main.o
0x0854b304 GADLENTRY
有什么问题吗?我怎样才能得到正确的垃圾箱
*(.initdata)
.initdata 0x08540000
为
.initdata
创建一个单独的输出部分,如:
SECTIONS
{
. = 0x08540000;
.initdata : { *(.initdata) }
.rodata : { *(.rodata) }
...
在原始链接器脚本文件中,在.initdata
前面放置了其他内容,请在映射文件中检查它是什么
确保已经描述了链接器脚本中的每个输入部分
例如,如果您的输入文件中有
.gnu.linkonce.r*
部分,它们可能会在第一个内存区域中结束,其属性与该部分属性一致,在本例中是rom
区域,这可能会导致您观察到的内容。Hi Chill。是的,我在地图文件中找到了.gnu.linkonce.r*。rodata 0x08546d80 0x45b0(.rodata.rodata..gnu.linkonce.r.*)rodata.str1.4 0x08546d80 0x228 hello_world.o 0x22c(放松前的大小)我确实喜欢你说的,但它无法工作。现在,我必须将结构GADLENTRY放在image bin文件的开头。你还有别的建议吗?谢谢