【问题标题】:Error while linking : linker script链接时出错:链接器脚本
【发布时间】:2015-05-29 05:06:33
【问题描述】:

这个错误是什么意思?

section .data 不能在段 2 中分配

这是用于 Xtensa 的裸机 GCC 交叉工具链。我觉得这与段大小无关。

【问题讨论】:

  • 代码更清晰...
  • 这个错误一般是什么意思?

标签: linker-scripts


【解决方案1】:

SECTIONS 命令告诉链接器如何将输入段映射到输出段,以及如何将输出段放置到内存中。 SECTIONS 命令的格式为:

 SECTIONS
 {
   sections-command
   sections-command
   ...
 }

我们可以通过使用 BYTE、SHORT、LONG、QUAD 或 SQUAD 作为输出部分命令在输出部分中包含显式数据字节。

使用 64 位主机或目标时,QUAD 和 SQUAD 是相同的;他们 两者都存储一个 8 字节或 64 位的值。当主机和目标都是 32 位,表达式被计算为 32 位。在这种情况下,四 存储一个 32 位值零扩展到 64 位,SQUAD 存储一个 32 位值符号扩展为 64 位。

如果输出文件的目标文件格式有明确的字节序,这是正常情况,值将存储在那个字节序中。 当目标文件格式没有明确的字节序时,和例如一样,S-records的值将存储在第一个输入对象文件的字节序中。

注意——这些命令只在部分描述中起作用,而不是在它们之间,因此链接器会产生以下错误:

 SECTIONS { .text : { *(.text) } LONG(1) .data : { *(.data) } }

而这将起作用:

 SECTIONS { .text : { *(.text) ; LONG(1) } .data : { *(.data) } }

我希望你现在可以解决你的错误!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 2014-07-12
    相关资源
    最近更新 更多