【问题标题】:avr-ld error: "gc-sections requires either an entry or an undefined symbol"avr-ld 错误:“gc-sections 需要一个条目或一个未定义的符号”
【发布时间】:2015-10-06 05:18:45
【问题描述】:

在编译和链接 --gc-sections 时,使用 avr-gcc 并尝试使用 -ffunction-sections 和 -fdata-sections 减小二进制文件的大小。 .lds 文件不包含任何内容:

部分 { }

将许多 .o 部分链接到一个 .a 时会发生此错误,稍后将使用该 .a 来完成构建。

我已经阅读了一些讨论这些选项的其他帖子,但没有任何内容可以澄清 ENTRY() 问题。在尝试减少代码大小之前,他们似乎在部分阶段不需要它(预先存在的链接器脚本显然不使用它)。

文档状态:--gc-sectionts

"在进行部分链接时可以设置此选项(使用选项'-r'启用)。在这种情况下,保留的符号根必须由'--entry'或'--undefined'明确指定选项或通过链接描述文件中的 ENTRY 命令。”

这就是我迷路的地方。非常感谢更多关于如何在链接描述文件中使用 --undefined、--entry 或 ENTRY cmd 来解决此问题的说明。

【问题讨论】:

  • 所以看起来没有人有建议。我最终在部分链接阶段跳过了 --gc-sections ,并且仅在链接的最后阶段使用此链接器选项。这仍然会导致其他问题,从二进制文件中删除必要的东西。但我会发布一个关于这个的新问题。

标签: c gnu ld avr


【解决方案1】:

我有类似的问题并放弃了。我最终编译时启用了 -fwhole-program 选项,这显着减小了引导加载程序的大小。

【讨论】:

    猜你喜欢
    • 2014-09-04
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    相关资源
    最近更新 更多