gcc链接文件的内存Map,什么语法是什么?

6rqinv9w  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(136)

当使用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
}

字符串
/谢谢

qrjkbowd

qrjkbowd1#

该语法在GNU binutils ld documentation中有文档说明--它更像是一个参考而不是教程,但是其中有各种各样的示例。

相关问题