我意识到我没有添加libary m。所以我使用add libraries选项附加-lm。 make文件现在有这个命令。
avr-g++ -o"CustomLEDPoi.elf" ./src/glowstick2.o ./lib/CShiftPWM.o ./lib/MeetAndroid.o ./lib/hsv2rgb.o ./arduinolib/HardwareSerial.o ./arduinolib/SPI.o -larduino_core -lm -Wl,-Map,CustomLEDPoi.map,--cref -Wl,--gc-sections -L"C:\Users\Justin\workspaceArduino\arduino_core\328P_16MHz Arduino" -L"C:\Users\Justin\workspaceArduino\arduino_core\328P_16MHz Arduino\src" -Xlinker -verbose -mmcu=atmega328p
这仍然给了我同样的问题。 看着指南 http://arduino.cc/playground/Code/Eclipse 它说,
如果您使用的是C ++,那么hex文件可能会非常大。在里面 链接器菜单,将命令更改为avr-gcc和命令行 模式如下:$ {COMMAND} --cref -s -Os $ {OUTPUT_FLAG} $ {OUTPUT_PREFIX} $ {OUTPUT} $ {INPUTS} -lm $ {FLAGS}
我的make文件现在有这个命令。
avr-g++ --cref -s -Os -o"CustomLEDPoi.elf" ./src/glowstick2.o ./lib/CShiftPWM.o ./lib/MeetAndroid.o ./lib/hsv2rgb.o ./arduinolib/HardwareSerial.o ./arduinolib/SPI.o -larduino_core -lm -lm -Wl,-Map,CustomLEDPoi.map,--cref -Wl,--gc-sections -L"C:\Users\Justin\workspaceArduino\arduino_core\328P_16MHz Arduino" -L"C:\Users\Justin\workspaceArduino\arduino_core\328P_16MHz Arduino\src" -Xlinker -verbose -mmcu=atmega328p
这里是catastrohic错误 ATmega32 (avr5) 在GCC链接器脚本中: 数据 (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0
ATmega32 (avr5)
(rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0
手册声明:
(0xC6) UDR0 USART I/O Data Register
at地址(0xC6)将由用户.data写入