Я новичок в этом сообществе, поскольку никогда раньше не создавал учетную запись и не задавал вопросов, но я постоянно использую этот сайт для решения своих проблем с программированием. Так что спасибо тебе! На этот раз, однако, я не смог найти другой вопрос, соответствующий моим точным потребностям. Если это повтор, прошу прощения.
У меня elementary OS 0.2 (Luna), производная от Ubuntu 12.04. Я использую библиотеку 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. Но я пробовал это безрезультатно.
Всем большое спасибо. Я ценю помощь этого сообщества.