【问题标题】:What kind of error is this "c(.text+0x7): relocation truncated to fit: 8 .data"这是什么类型的错误“c(.text+0x7): relocation truncated to fit: 8 .data”
【发布时间】:2012-03-04 04:03:29
【问题描述】:

我正在编译/链接我的程序

i386-gcc -o output.lnx func.opc mainc.opc

我一直收到这个错误。老实说,我不知道这意味着什么。

有什么线索吗?

谢谢,

【问题讨论】:

  • .opc 文件为操作码文件,由 i-386-as -o func.opc func.s 生成
  • @IgnacioVazquez-Abrams:那我该如何解决这个问题?
  • 您是指目标文件吗?操作码通常与 Java 或 .NET VM 等 VM 相关联,而不与 i386 等物理架构相关联。在 i386 上使用 .o 作为扩展更为常见。
  • 现在,您为什么以及如何生成这个原始汇编程序?如果所述组件有问题,它可能会在链接阶段产生这样的错误。那些奇怪的扩展让我知道你可能在这里做一些不寻常的事情......
  • 看起来你有一个越界值,即一个大于你放置它的位置的值。鉴于错误消息,看起来你试图在 8 中放置一些东西-位字段。

标签: c gcc assembly compilation i386


【解决方案1】:

这通常是程序中有太多代码或数据的症状。 .text 段(代码)中偏移量 7 处的重定位已以固定大小(2 或 4)编译,但它所指的数据/指令超过 64k 或 2G。

除此之外,如果没有实际看到目标文件,我无法告诉您如何修复它。用于查明问题的有用工具是objdump(带有标志-dr)和readelf 程序。

【讨论】:

    猜你喜欢
    • 2012-05-16
    • 1970-01-01
    • 2020-09-18
    • 2019-03-09
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多