重定位库的特定目标文件

时间:2014-10-21 08:03:58

标签: gcc ld

我有一个针对ARM Cortex-M3的GCC项目。链接描述文件定义了每个源部分的位置。所以我有这样的部分

.text : 
{
    *(.text)
} > FLASH
_sidata = .;
.data : AT (_sidata)
{
    _sdata = .;
    *(.data)
    _edata = .;
}

项目使用包含目标文件lib.aobject.o的库other.o。现在我希望object.o的.text部分放在_sdata和_edata之间。目标是这些部分将被启动代码从FLASH复制到RAM,并在那里执行。 other.o不应放在该部分,因为它太大了。

我尝试过in this SO question

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

但由于object.o来自某个库并且无法直接使用,因此失败了。

1 个答案:

答案 0 :(得分:0)

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

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