gcc链接器 - 将存档中的所有目标文件映射到某个部分

时间:2017-11-20 19:43:56

标签: c++ c gcc linker

gcc链接器文件中,如何将存档中所有.obj的所有功能映射到某个部分?

我知道如何在源文件中逐个函数地执行它,但我想通过.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 部分。

1 个答案:

答案 0 :(得分:1)

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

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

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

即使在这个错误的情况下,链接器也会生成.map并检查此.map,显示archive.dlb 中的所有对象除了.text 之外被放置在预期的.dflash_code

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