Gcc 重新定位库的特定对象文件

Gcc 重新定位库的特定对象文件,gcc,ld,Gcc,Ld,我有一个ARM Cortex-M3的GCC项目。链接器脚本定义每个源节必须位于的位置。所以我有这样的部分 .text : { *(.text) } > FLASH _sidata = .; .data : AT (_sidata) { _sdata = .; *(.data) _edata = .; } 该项目使用包含对象文件object.o和other.o的库lib.a。现在我想把object.o的.text部分放在_sdata和_edata之间。目标

我有一个ARM Cortex-M3的GCC项目。链接器脚本定义每个源节必须位于的位置。所以我有这样的部分

.text : 
{
    *(.text)
} > FLASH
_sidata = .;
.data : AT (_sidata)
{
    _sdata = .;
    *(.data)
    _edata = .;
}
该项目使用包含对象文件object.o和other.o的库lib.a。现在我想把object.o的.text部分放在_sdata和_edata之间。目标是启动代码将这些部分从闪存复制到RAM,并在那里执行。另一个.o不应放在该部分中,因为它太大了

我试过了


但是这失败了,因为object.o是从库中获取的,不能直接使用。

我自己找到的。必须指定库

.data : AT (_sidata)
{
    _sdata = .;
    *(.data)
    lib.a:object.o(.text)
    _edata = .;
}
.data : AT (_sidata)
{
    _sdata = .;
    *(.data)
    lib.a:object.o(.text)
    _edata = .;
}