Skip to content

Code would not compile/link without errors, copy of code compiled/linked without errors #1691

Closed as not planned
@meakerb

Description

@meakerb

Describe the problem

Using IDE 2.0.0 (or 2.0.1?) on a Windows 11 machine. Had a large program that I broke into multiple files, with corresponding .h files, extern declarations, etx. Code would compile but fail during linking, giving 'multiple definition of' errors (error messages pasted below). Machine was powered-down/rebooted without changing the problem.

Today I copied the sketch folder and renamed it (along with the .ino file) so that I could experiment with changing the code around to see what would fix the error. When I started the IDE, I was notified of a new version of the IDE (2.0.2), so I did the update. When I opened the new copy of my code, it compiled and linked without error. But when I opened the original (identical) version, it still gives me errors.

Using board 'mega' from platform in folder: C:\Users\meakerb\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6
Using core 'arduino' from platform in folder: C:\Users\meakerb\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6
Detecting libraries used...
"C:\\Users\\meakerb\\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=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\mega" "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\sketch\\Shirley_v2p0.ino.cpp" -o nul
Alternatives for LiquidCrystal_I2C.h: [LiquidCrystal [email protected]]
ResolveLibrary(LiquidCrystal_I2C.h)
  -> candidates: [LiquidCrystal [email protected]]
"C:\\Users\\meakerb\\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=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\mega" "-Ic:\\Users\\meakerb\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C" "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\sketch\\Shirley_v2p0.ino.cpp" -o nul
Alternatives for Wire.h: [[email protected]]
ResolveLibrary(Wire.h)
  -> candidates: [[email protected]]
"C:\\Users\\meakerb\\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=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\mega" "-Ic:\\Users\\meakerb\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C" "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\libraries\\Wire\\src" "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\sketch\\Shirley_v2p0.ino.cpp" -o nul
Alternatives for LibPrintf.h: [[email protected]]
ResolveLibrary(LibPrintf.h)
  -> candidates: [[email protected]]
"C:\\Users\\meakerb\\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=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\mega" "-Ic:\\Users\\meakerb\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C" "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\libraries\\Wire\\src" "-Ic:\\Users\\meakerb\\Documents\\Arduino\\libraries\\LibPrintf\\src" "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\sketch\\Shirley_v2p0.ino.cpp" -o nul
Using cached library dependencies for file: C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\sketch\button.cpp
Using cached library dependencies for file: C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\sketch\initMenu.cpp
Using cached library dependencies for file: C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\sketch\initScorecard.cpp
Using cached library dependencies for file: C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\sketch\rotate.cpp
Using cached library dependencies for file: C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\sketch\updateLCD.cpp
Using cached library dependencies for file: C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\sketch\utils.cpp
Using cached library dependencies for file: c:\Users\meakerb\Documents\Arduino\libraries\LiquidCrystal_I2C\LiquidCrystal_I2C.cpp
Using cached library dependencies for file: C:\Users\meakerb\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\Wire\src\Wire.cpp
Using cached library dependencies for file: C:\Users\meakerb\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\Wire\src\utility\twi.c
Using cached library dependencies for file: c:\Users\meakerb\Documents\Arduino\libraries\LibPrintf\src\LibPrintf.cpp
Generating function prototypes...
"C:\\Users\\meakerb\\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=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\mega" "-Ic:\\Users\\meakerb\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C" "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\libraries\\Wire\\src" "-Ic:\\Users\\meakerb\\Documents\\Arduino\\libraries\\LibPrintf\\src" "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\sketch\\Shirley_v2p0.ino.cpp" -o "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\preproc\\ctags_target_for_gcc_minus_e.cpp"
"C:\\Users\\meakerb\\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\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\preproc\\ctags_target_for_gcc_minus_e.cpp"
Compiling sketch...
"C:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\mega" "-Ic:\\Users\\meakerb\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C" "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\libraries\\Wire\\src" "-Ic:\\Users\\meakerb\\Documents\\Arduino\\libraries\\LibPrintf\\src" "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\sketch\\Shirley_v2p0.ino.cpp" -o "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\sketch\\Shirley_v2p0.ino.cpp.o"
Using previously compiled file: C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\sketch\utils.cpp.o
Using previously compiled file: C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\sketch\initScorecard.cpp.o
Using previously compiled file: C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\sketch\button.cpp.o
Using previously compiled file: C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\sketch\updateLCD.cpp.o
Using previously compiled file: C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\sketch\rotate.cpp.o
Using previously compiled file: C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\sketch\initMenu.cpp.o
Compiling libraries...
Compiling library "LiquidCrystal I2C"
"C:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\cores\\arduino" "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\variants\\mega" "-Ic:\\Users\\meakerb\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C" "-IC:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.6\\libraries\\Wire\\src" "-Ic:\\Users\\meakerb\\Documents\\Arduino\\libraries\\LibPrintf\\src" "c:\\Users\\meakerb\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C\\LiquidCrystal_I2C.cpp" -o "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\libraries\\LiquidCrystal_I2C\\LiquidCrystal_I2C.cpp.o"
Compiling library "Wire"
Using previously compiled file: C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\libraries\Wire\Wire.cpp.o
Using previously compiled file: C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\libraries\Wire\utility\twi.c.o
Compiling library "LibPrintf"
Using previously compiled file: C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\libraries\LibPrintf\LibPrintf.cpp.o
Compiling core...
Using precompiled core: C:\Users\meakerb\AppData\Local\Temp\arduino-core-cache\core_arduino_avr_mega_cpu_atmega2560_e7f72ac0c8f4febc6d4fd209483a0724.a
Linking everything together...
"C:\\Users\\meakerb\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-gcc" -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega2560 -o "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB/Shirley_v2p0.ino.elf" "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\sketch\\Shirley_v2p0.ino.cpp.o" "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\sketch\\button.cpp.o" "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\sketch\\initMenu.cpp.o" "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\sketch\\initScorecard.cpp.o" "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\sketch\\rotate.cpp.o" "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\sketch\\updateLCD.cpp.o" "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\sketch\\utils.cpp.o" "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\libraries\\LiquidCrystal_I2C\\LiquidCrystal_I2C.cpp.o" "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\libraries\\Wire\\Wire.cpp.o" "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\libraries\\Wire\\utility\\twi.c.o" "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB\\libraries\\LibPrintf\\LibPrintf.cpp.o" "C:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB/..\\arduino-core-cache\\core_arduino_avr_mega_cpu_atmega2560_e7f72ac0c8f4febc6d4fd209483a0724.a" "-LC:\\Users\\meakerb\\AppData\\Local\\Temp\\arduino-sketch-65B68380ED218314C243A40E61648DDB" -lm
C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\sketch\utils.cpp.o (symbol from plugin): In function `initMenu()':
(.text+0x0): multiple definition of `initMenu()'
C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\sketch\initMenu.cpp.o (symbol from plugin):(.text+0x0): first defined here
C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\sketch\utils.cpp.o (symbol from plugin): In function `initMenu()':
(.text+0x0): multiple definition of `getClub()'
C:\Users\meakerb\AppData\Local\Temp\arduino-sketch-65B68380ED218314C243A40E61648DDB\sketch\initMenu.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status

Using library LiquidCrystal I2C at version 1.1.2 in folder: C:\Users\meakerb\Documents\Arduino\libraries\LiquidCrystal_I2C 
Using library Wire at version 1.0 in folder: C:\Users\meakerb\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\Wire 
Using library LibPrintf at version 1.2.13 in folder: C:\Users\meakerb\Documents\Arduino\libraries\LibPrintf 
exit status 1

Compilation error: exit status 1

To reproduce

Not sure how to reproduce this error, since a copy of my code compiles/links without error.

Expected behavior

Code should compile/link consistently.

Arduino IDE version

2.0.2

Operating system

Windows

Operating system version

10.0.22621 Build 22621

Additional context

No response

Issue checklist

  • I searched for previous reports in the issue tracker
  • I verified the problem still occurs when using the latest nightly build
  • My report contains all necessary details

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions