我有一个针对ARM Cortex-M3的GCC项目。链接描述文件定义了每个源部分的位置。所以我有这样的部分
.text :
{
*(.text)
} > FLASH
_sidata = .;
.data : AT (_sidata)
{
_sdata = .;
*(.data)
_edata = .;
}
项目使用包含目标文件lib.a
和object.o
的库other.o
。现在我希望object.o
的.text部分放在_sdata和_edata之间。目标是这些部分将被启动代码从FLASH复制到RAM,并在那里执行。 other.o
不应放在该部分,因为它太大了。
.data : AT (_sidata)
{
_sdata = .;
*(.data)
object.o(.text)
_edata = .;
}
但由于object.o
来自某个库并且无法直接使用,因此失败了。
答案 0 :(得分:0)
我自己找到了。必须指定库。
.data : AT (_sidata)
{
_sdata = .;
*(.data)
lib.a:object.o(.text)
_edata = .;
}