Цитата
У Sminder-а возникла следующая проблема: он собирает проект без опции -lm и некоторые модули функцию `__fixsfsi' из libgcc.а. Что эта версия функции не эффективна это только пол проблемы. А основная проблема в том что 'dtostrf' функция из avr-libc и использует `__fixsfsi' из libm.a. Ну и компоновщик не может добавить в проект две функции с одним именем.К сожалению я не понял как в AVRStudio как по-человечески добавить libm, и поэтому предложил такой способ.
Посмотрите внимательно на ошибки - libm там не упоминается.
Если бы она отсутствовала, линкер бы ругнулся на ненайденное имя.
Вот убрал из мэйкфала -lm:
Цитата
Linking: main.elf
C:/_tools/gcc_avr/bin/avr-gcc -mmcu=atmega162 -I. -gstabs - -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.o -std=c99 -MD -MP -MF .dep/main.elf.d main.o --output main.elf -Wl,-Map=main.map,--cref
main.o(.text+0x28): In function `main':
: undefined reference to `dtostrf'
В данном случае имеется дубль.
Я очень слабо верю, что в стандартном компиляторе можно иметь одинаковое имя функции, в двух разных либах, которые могут линковаться в один проект. Слишком очевидный баг.
Цитата
Мое мнение такое: если у вас меньше 64 кб кода то торопиться переходить на winavr2007 смысла нет.
Судя по тому, как Йорг и Эрик отбиваются от вопросов на avrfreaks, еще долго не захочется переходить.
Я интересуюсь сборкой 2006. (сам работаю под 2005)