【问题标题】:gcc linker - map all object files in an archive to a certain sectiongcc 链接器 - 将存档中的所有目标文件映射到某个部分
【发布时间】:2017-11-20 19:43:56
【问题描述】:

gcc链接器文件中,如何将归档中所有.objs的所有函数映射到某个部分?

我知道如何在源文件中逐个函数地执行此操作,但我想在链接器文件中按.obj 名称执行此操作。

我找到了this post in the gcc mailing lists,但对我来说它不起作用。

我通过复制海报所做的修改了我的.ld...

.dflash_code :
  {
    *archive.dlb: // this is my archive file
  } >dflash

...但是没有用。

当我将__attribute__((section(".dflash_code"))) 添加到函数时,链接器报告的溢出量会减少,因此我知道链接器正在关注__attribute__

但是,我真的很想为整个存档(即.dlb)这样做。

我尝试仅基于一个 .obj 文件来做,即使这样也行不通

.dflash_code :
  {
    *compile.doj //my object file
  } >dflash

更新

实际上,看起来它正在工作(有点):它正在将ATI_micropython.dlb 的内容输出到.dflash_code 除了 .text部分。 p>

【问题讨论】:

    标签: c++ c gcc linker


    【解决方案1】:

    我尝试的语法是正确的。
    问题是在我的链接器文件中,我有一个 SECTION 语句 above 以下 SECTION 语句

    .dflash_code :
      {
        *archive.dlb: // this is my archive file
      } >dflash
    

    将所有 *.text 部分放在一个已满的部分中。

    即使在这种错误情况下,链接器也会生成一个.map,并且检查这个.map 表明archive.dlb 内的所有对象部分除了.text 都被放置在预期的位置.dflash_code.

    我将.dflash_code 部分移到引用*.text 的部分上方,现在它可以工作了。

    【讨论】:

      猜你喜欢
      • 2022-01-03
      • 2014-04-07
      • 2021-10-28
      • 2021-01-29
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多