【发布时间】: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 ,并且仅在链接的最后阶段使用此链接器选项。这仍然会导致其他问题,从二进制文件中删除必要的东西。但我会发布一个关于这个的新问题。