【问题标题】:Contiki, MSP430: relocation truncated to fit symbols errorsContiki,MSP430:重定位被截断以适合符号错误
【发布时间】:2014-11-05 12:31:42
【问题描述】:

我目前正在尝试在 Contiki 中为 tmote sky 平台使用以下命令编译程序:

1) "make sky-shell-exec.sky TARGET=sky"

2) "使 sky-shell-exec.sky CORE=sky-shell-exec.sky TARGET=sky"

我知道第一个命令有效,但第二个错误如下:

“contiki-sky.a(symbols.o):(.rodata+0x1f00): relocation truncated to fit: R_MSP430_16_BYTE 反对在 sky-shell-exec.sky 的 ABS 部分定义的符号 '_efartext'

contiki-sky.a(symbols.o):(.rodata+0x1f1c):重定位被截断以适应:R_MSP430_16_BYTE 反对在 sky-shell-exec.sky 的 .vectors 部分中定义的符号 '_vectors_end'

我的 msp430-gcc 版本是 4.7.0 20120322 (mspgcc dev 20120716)。

我试着环顾四周,但在任何地方都没有发现这个错误。

我假设这意味着我的符号表空间不足,我应该压缩代码。我已经尝试过这样做,并且现在我无法再减少代码库了。我这样想对吗?

有谁知道这意味着什么以及可能的解决方法?

谢谢!

【问题讨论】:

  • 我已经尝试在 Makefile.msp430 的第 132 行去掉 -g 选项,就像在这个修复中一样:sourceforge.net/p/contiki/mailman/contiki-developers/thread/… 但是,这并没有帮助。
  • 与 Contiki 无关:在我的项目中遇到了这个问题,并使用选项 -gdwarf-3 而不是 -ggdb 解决了。

标签: c compilation msp430 contiki


【解决方案1】:

事实证明,我的错误比我想象的更具体到我的工作代码库。我正在使用带有 msp430-gcc 4.7.0 的 contiki 2.6 的修改版本。我有一个带有即时 contiki 2.7 的 VM,然后将修改后的 contiki 2.6 分支以在同一 VM 上工作。 msp430-gcc 4.7.0 在 contiki 2.7 上运行良好,但是当我开始在我的 contiki 2.6 分支上工作时,一切都坏了。我最好的猜测是由于两个代码库之间 Makefile.include 的差异引起的。我假设 contiki 2.6 不是为 msp430-gcc 4.7.0 构建的。因此,为了在 2.6 上工作,我目前正在切换到 msp430-gcc 4.5.3 并为 contiki 2.6 制作一个完全独立的 VM,这似乎到目前为止正在工作......尽管在 sky-shell-exec 示例中存在一些问题。所以我最终可能会改用 msp430-gcc 4.6.3。

【讨论】:

  • 我也有 msp430-gcc 4.6.x。它与 contiki 2.6 给出了相同的编译错误。但是它成功编译了 contiki 2.7。
【解决方案2】:

我没有处理过这个平台,但首先构建没有调试配置。接下来你可以检查链接器文件。

【讨论】:

  • 你能解释一下你的意思吗?如果通过调试,您的意思是从 CFLAGSNO 中删除 -g 选项,这样: CFLAGSNO = -Wall -mmcu=$(CC_MCU) -g $(CFLAGSWERROR) 变为: CFLAGSNO = -Wall -mmcu=$(CC_MCU) $(CFLAGSWERROR) 在我的 Makefile.msp430 文件,那么我想我已经尝试了你所说的。这在这里解释:sourceforge.net/p/contiki/mailman/contiki-developers/thread/….
  • 另外,您能否解释一下如何检查链接器文件以及检查时我会寻找什么?
猜你喜欢
  • 2014-08-13
  • 1970-01-01
  • 2019-05-23
  • 2012-01-01
  • 2013-12-25
  • 1970-01-01
  • 2011-08-29
  • 2016-05-01
  • 2016-04-03
相关资源
最近更新 更多