【发布时间】:2013-12-25 04:50:30
【问题描述】:
我是这个社区的新手,因为我以前从未创建过帐户并提出过问题,但我一直使用这个网站来解决我的编程难题。所以谢谢!但是,这一次,我找不到另一个符合我确切需求的问题。如果这是重复,我很抱歉。
我使用的是 Ubuntu 12.04 的衍生版本 Elementary OS 0.2 (Luna)。我正在使用 avr-gcc 库为 ATmega32u4 微处理器编译程序。我在开发这个程序时已经编译了好几次,但直到现在我还没有收到这个错误。我把它贴在下面。
/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(log.o):../../../libm/fplib/log.S:100: relocation truncated to fit: R_AVR_13_PCREL against symbol `__addsf3' defined in .text section in /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o)
/usr/lib/gcc/avr/4.5.3/../../../avr/lib/avr5/libc.a(modf.o):../../../libm/fplib/modf.S:90: relocation truncated to fit: R_AVR_13_PCREL against symbol `__subsf3' defined in .text section in /usr/lib/gcc/avr/4.5.3/avr5/libgcc.a(_addsub_sf.o)
collect2: ld returned 1 exit status
make: *** [main.elf] Error 1
简而言之,我不知道这是指什么。我的程序包含大量文件,所以我不能在这里准确地发布整个内容;相反,我会对以下问题的一般性答案感兴趣:
- 什么是“重定位被截断以适应”错误?我读到它与访问太远的内存有关,但在我的 C 程序中这实际上是如何发生的?
- 什么是 R_AVR_13_PCREL?它似乎是 avr-gcc 库所固有的;我的程序的哪个方面可能会引用这样的变量?
- 我包含的唯一通用 C 头文件是 math.h;其他文件是我自己的。我知道 math.h 有一个时髦的标志,应该放在 Makefile 中;我相信它是-lm。 但我试过这个没有用。
非常感谢大家。感谢这个社区的帮助。
【问题讨论】:
-
可能令人讨厌的浮点辅助函数。也许您的芯片上的 RAM 太少了?
标签: c avr-gcc atmega relocation