ld:从主 .text 部分中排除库并将其移动到另一个部分

ld: exclude library from main .text section and move it to another section

我正在尝试将库移动到闪存中的指定部分。

我是这样操作的:

.text.freertos : ALIGN(0x1000) 
{
    FILL(0xdead)
    *libfreertos_lib.a:*(.text*)
} >PROGRAM_FLASH 

当我把它放在我的主要部分之后时,它什么也没有产生。该部分仍然是空的,我认为是因为链接器足够聪明,可以意识到它已经将这个库作为主要部分的一部分,并且没有必要浪费内存。

不过,我真的更希望在主要的 .text 部分之后有一堆库。还有一种方法可以在主 .text 部分中排除库吗?我正在寻找类似

的东西
EXCLUDE_<something>(*libfreertos_lib.a:*(.text*))

我知道 EXCLUDE_FILE 存在,但我不想列出属于某个库的所有 .o 文件

最终将该部分推送到 Flash 中的单独部分。

MEMORY
{
  /* Define each memory region */
  PROGRAM_FLASH (rx) : ORIGIN = 0x60000000, LENGTH = 0xC0000 
  LIBRARY_FLASH (rx) : ORIGIN = 0x600C0000, LENGTH = 0x10000
  SRAM_DTC (rwx) : ORIGIN = 0x20000000, LENGTH = 0x10000 
  SRAM_ITC (rwx) : ORIGIN = 0x0, LENGTH = 0x10000
}

.freertos : ALIGN(4) 
{
    FILL(0xdd)
    *libfreertos_lib.a:*(.text*)
} >LIBRARY_FLASH