c++ - gcc 链接器 - 将存档中的所有目标文件映射到特定部分

标签 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 部分。

最佳答案

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

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

把所有*.text部分中的部分变得过满。

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

我移动了 .dflash_code引用 *.text 的部分上方的部分现在可以使用了。

关于c++ - gcc 链接器 - 将存档中的所有目标文件映射到特定部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47399852/

相关文章:

c++ - 以 L 开头的宽字符串文字(如 L“Hello World”)是否保证以 Unicode 编码?

c++ - C++函数中链表的大小

c - 我如何将字符串存储在 C 中的 char*s[] 中?

c - 条件赋值的简写方式

c++ - 在不同计算机上编译时,C++ 损坏的名称是否保持一致?

c++ - GCC - 具有相同名称的不同类的错误

c++ - 递归地打印一个类内部的链表c++

c - &ch_array[0] 和 ch_array 有什么区别?

linux - gcc 链接器 (ld) 找不到共享库

c - 带条件扩展的 GCC 宏?