arduino初始编译可能的问题

在使用arduino板子的时候编译所写的代码时出现报错:

c:/users/15045/appdata/local/arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/../lib/gcc/avr/7.3.0/../../../../avr/lib/avr5/crtatmega328p.o:(.init9+0x0): undefined reference to `main' collect2.exe: error: ld returned 1 exit status exit status 1 Compilation error: exit status 1

这个情况是链接器无法找到main函数入口,但是实际上使用arduino IDE是会自动将setup()和loop()函数转换为c中的格式的,出现这种情况时首先在IDE的文件(file)>首选项(Preferences)中(也可以ctrl+,)进入显示详细输出,选择编译打勾
attachments/Pasted image 20250708122333.png
确定,进一步详细查看错误消息
再次编译,如果看到一下报错:

FQBN: arduino:avr:uno Using board 'uno' from platform in folder: C:\Users\15045\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6 Using core 'arduino' from platform in folder: C:\Users\15045\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6 Detecting libraries used... C:\Users\15045\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Users\15045\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\15045\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\standard C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13\sketch\my_first_sketch.ino.cpp -o nul Generating function prototypes... C:\Users\15045\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Users\15045\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\15045\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\standard C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13\sketch\my_first_sketch.ino.cpp -o C:\Users\15045\AppData\Local\Temp\1535054570\sketch_merged.cpp C:\Users\15045\AppData\Local\Arduino15\packages\builtin\tools\ctags\5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives C:\Users\15045\AppData\Local\Temp\1535054570\sketch_merged.cpp Compiling sketch... "C:\Users\15045\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Users\15045\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino" "-IC:\Users\15045\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\standard" "C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13\sketch\my_first_sketch.ino.cpp" -o "C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13\sketch\my_first_sketch.ino.cpp.o" Compiling libraries... Compiling core... Using precompiled core: C:\Users\15045\AppData\Local\arduino\cores\arduino_avr_uno_9dcf9877e91492c77305ac31a96cb75d\core.a Linking everything together... "C:\Users\15045\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-gcc" -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o "C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13/my_first_sketch.ino.elf" "C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13\sketch\my_first_sketch.ino.cpp.o" "C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13/..\..\cores\arduino_avr_uno_9dcf9877e91492c77305ac31a96cb75d\core.a" "-LC:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13" -lm c:/users/15045/appdata/local/arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/../lib/gcc/avr/7.3.0/../../../../avr/lib/avr5/crtatmega328p.o:(.init9+0x0): undefined reference to `main' collect2.exe: error: ld returned 1 exit status exit status 1 Compilation error: exit status 1

如果是以上报错,那么证明Arduino 核心库未能正确提供程序入口点。一般这样子都是核心库缓存文件损坏或不匹配版本导致,因此我们需要手动删除核心库中的缓存文件重新编译生成一个新的缓存文件。
找到路径C:\Users\15045\AppData\Local\arduino\cores\arduino_avr_uno_9dcf9877e91492c77305ac31a96cb75d
(哈希值可能不同)
手动删除该文件即可,当然在文件管理器里面找有点麻烦我是直接在终端里面找的
cmd输入cd C:\Users\15045\AppData\Local\arduino\cores\
输入dir查看文件
attachments/Pasted image 20250708122410.png
输入命令rmdir /s /q "C:\Users\15045\AppData\Local\arduino\cores\arduino_avr_uno_9dcf9877e91492c77305ac31a96cb75d"即可,最后再重新编译,若回显

FQBN: arduino:avr:uno Using board 'uno' from platform in folder: C:\Users\15045\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6 Using core 'arduino' from platform in folder: C:\Users\15045\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6 Detecting libraries used... C:\Users\15045\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Users\15045\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\15045\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\standard C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13\sketch\my_first_sketch.ino.cpp -o nul Generating function prototypes... C:\Users\15045\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Users\15045\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\15045\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\standard C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13\sketch\my_first_sketch.ino.cpp -o C:\Users\15045\AppData\Local\Temp\1243274097\sketch_merged.cpp C:\Users\15045\AppData\Local\Arduino15\packages\builtin\tools\ctags\5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives C:\Users\15045\AppData\Local\Temp\1243274097\sketch_merged.cpp Compiling sketch... "C:\Users\15045\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Users\15045\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino" "-IC:\Users\15045\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\standard" "C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13\sketch\my_first_sketch.ino.cpp" -o "C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13\sketch\my_first_sketch.ino.cpp.o" Compiling libraries... Compiling core... Using precompiled core: C:\Users\15045\AppData\Local\arduino\cores\arduino_avr_uno_9dcf9877e91492c77305ac31a96cb75d\core.a Linking everything together... "C:\Users\15045\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-gcc" -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o "C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13/my_first_sketch.ino.elf" "C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13\sketch\my_first_sketch.ino.cpp.o" "C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13/..\..\cores\arduino_avr_uno_9dcf9877e91492c77305ac31a96cb75d\core.a" "-LC:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13" -lm "C:\Users\15045\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 "C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13/my_first_sketch.ino.elf" "C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13/my_first_sketch.ino.eep" "C:\Users\15045\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -R .eeprom "C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13/my_first_sketch.ino.elf" "C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13/my_first_sketch.ino.hex" "C:\Users\15045\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-size" -A "C:\Users\15045\AppData\Local\arduino\sketches\ECDEB923EDED646DC5C69F8C6A7ABC13/my_first_sketch.ino.elf" Sketch uses 1992 bytes (6%) of program storage space. Maximum is 32256 bytes. Global variables use 200 bytes (9%) of dynamic memory, leaving 1848 bytes for local variables. Maximum is 2048 bytes.

则表明编译成功,回到开始的地方可以选择吧显示编译详细信息关掉正常使用了。

posted @ 2025-07-08 12:24  w0e6x  阅读(186)  评论(0)    收藏  举报