如何将来自静态库的所有静态变量放在特定的链接描述文件部分中

时间:2015-04-29 11:00:17

标签: c stm32 linker-scripts

我在stm32核板上工作。我的项目由几个不同的库组成。

我想将所有未初始化的变量从静态库(mylib.a)中放入特定的内存部分而不是bss部分。

以下是链接描述文件中的bss部分:

. = ALIGN(4);
.bss :
{
    /* This is used by the startup in order to initialize the .bss section */
    _sbss = .;         /* define a global symbol at bss start */
    __bss_start__ = _sbss;
    *(.bss)
    *(.bss*)
    *(COMMON)

    . = ALIGN(4);
    _ebss = .;         /* define a global symbol at bss end */
    __bss_end__ = _ebss;
} >RAM

我尝试在bss之前添加此部分:

. = ALIGN(4);
.mybss :
{
    /* This is used by the startup in order to initialize the .bss section */
    _smybss = .;         /* define a global symbol at bss start */
    __mybss_start__ = _smybss;
    mylib.a:*(.bss)
    mylib.a:*(.bss*)
    mylib.a:*(COMMON)

    . = ALIGN(4);
    _emybss = .;         /* define a global symbol at bss end */
    __mybss_end__ = _emybss;
} >RAM

编译器没有抱怨但是当我用nm命令检查时,生成的elf _smybss符号与_emybss符号的地址相同。所以mybss部分是空的。

你对如何实现这个有什么建议吗?

由于

0 个答案:

没有答案