用于内存映射的gcc链接文件,是什么语法?

时间:2011-05-22 12:36:25

标签: gcc linker arm microcontroller cortex-m3

使用gcc对MCU进行交叉编译时,您需要向链接器提供链接描述文件,以便它知道如何创建最终目标文件。

我想了解有关此类文件的更多信息,但无法找到有关这些文件如何工作,使用何种语法,最佳做法以及应避免的内容的精彩教程。

以下是使用“-Tlinkfile.ld”选项提供给链接器的精简链接文件的示例:

MEMORY
{
    ram    (rwx) : ORIGIN = 0x20000000, LENGTH = 20k
    rom    (rx)  : ORIGIN = 0x00000000, LENGTH = 128K
}
SECTIONS
{
    .  = 0x0;           /* From 0x00000000 */
    .text : 
    {
        *(.nvic_vector)  /* Vector table */
        *(.text.*)      /* Program code */
        *(.text)        /* Program code */
        *(.rodata)      /* Read only data */
    } >rom

    .  = 0x20000000;    /* From 0x20000000 */      
    .data : 
    {
        *(.data)        /* Data memory */
    } >ram AT > rom

    .bss : 
    {
        *(.bss)         /* Zero-filled run time allocate data memory */
    } >ram AT > rom
}  

/感谢

1 个答案:

答案 0 :(得分:3)

语法记录在GNU binutils ld documentation中 - 这更像是一个参考而不是一个教程,但是它中散布着各种各样的例子。