GCC连接多个存储库

时间:2017-04-11 06:46:49

标签: gcc linker ld elf

  1. rom1rom2有不同的地址图,不连续!
  2. 必须将某些对象放入rom2
  3. 每次链接rom1时,rom2中的对象都应该是固定地址(rom2)。换句话说,rom1应该知道rom2的符号'链接时的地址。
  4. 我可以将精灵(rom2)链接到rom1吗?

1 个答案:

答案 0 :(得分:0)

如果我理解得很好:

  1. 您的系统有2个记忆rom1rom2
  2. 某些对象必须位于rom1,其他对象位于rom2
  3. 您的链接脚本应如下所示:

     MEMORY
     {
         rom1 : org=0x10000 len=1024
         rom2 : org=0x40000 len=1024
     }
    
     SECTIONS 
     {
         .text1  0x10000 : {foo.o(.text) } > rom1
         .text2  0x40000 : {bar.o(.text) } > rom2
     }
    

    在部分SECTIONS中,链接器从.text收集foo.o部分,并将此.text部分放在输出部分.text1中,从rom1中的地址0x10000开始。

    同样,它会从.text收集bar.o部分并将其放入rom2。