stm32duino / Arduino_Core_STM32

STM32 core support for Arduino
https://github.com/stm32duino/Arduino_Core_STM32/wiki
Other
2.77k stars 964 forks source link

Multiple libraries were found #762

Closed mrguen closed 4 years ago

mrguen commented 4 years ago

Error at compilation: "Multiple libraries were found for ..." for all the libraries that the sketch is using.

I checked if there was multiple libraries by searching in the explorer. The only duplicate (after failed compilation) is for example:

C:\Users\TG\AppData\Local\Temp\arduino_build_836171\libraries\Adafruit_GFX_Library and C:\Users\TG\Documents\Arduino\libraries\Adafruit_GFX_Library

So apparently the compiler is confused by the content of C:\Users\TG\AppData\Local\Temp\arduino_build_836171

Configuration

Windows 7 pro 64 bits IDE 1.8.10 Arduino core STM32 1.7.0

Board: Generic STM32F1 Series Board part number: BluePill F103C8 USART support: enabled (generic serial) USB support: CDC supersede USART USB: Low/full speed Optimize: smallest C runtime library: Newlib nano (default) Upload method Maple DFU bootloader 2.0

fpistm commented 4 years ago

This is Arduino IDE issue. Try to close and reopen.

mrguen commented 4 years ago

Tried to restart the computer: same. Also is a compilation time from 1 to 3 minutes. Something changed either with IDE 1.8.10 or core 1.7.0 or something else because it was not like that before.

fpistm commented 4 years ago

I guess it is a malformed library or something like that but I could not help on this.

mrguen commented 4 years ago

I also noticed other things:

I tried to clean AppData and reinstall boards:

fpistm commented 4 years ago
  • installing STM32 Cores takes forever

Mainly on Windows and it is worst if you have an antivirus.

  • it is HUGE aroung 835 Mb!

ARM GCC toolchain + CMSIS take around 600 Mb.

fpistm commented 4 years ago

@mrguen I've just met this issue working on another stuff. In fact the message seems told Adafruit_GFX_Library was the problem but in fact it misses one other.

Alternatives for Adafruit_miniTFTWing.h: []
ResolveLibrary(Adafruit_miniTFTWing.h)
  -> candidates: []
basic:3:10: error: Adafruit_miniTFTWing.h: No such file or directory
Multiple libraries were found for "SPI.h"
 #include "Adafruit_miniTFTWing.h"
 Used: /local/data/work/IDE/arduino/arduino-1.8.10/portable/packages/STM32/hardware/stm32/1.6.1/libraries/SPI
          ^~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Multiple libraries were found for "Adafruit_GFX.h"
 Used: /local/data/work/IDE/arduino/arduino-1.8.10/portable/sketchbook/libraries/Adafruit_GFX_Library
Multiple libraries were found for "Adafruit_ST7735.h"
 Used: /local/data/work/IDE/arduino/arduino-1.8.10/portable/sketchbook/libraries/Adafruit_ST7735_and_ST7789_Library
Using library Adafruit_GFX_Library at version 1.6.1 in folder: /local/data/work/IDE/arduino/arduino-1.8.10/portable/sketchbook/libraries/Adafruit_GFX_Library 
Using library Adafruit_ST7735_and_ST7789_Library at version 1.5.6 in folder: /local/data/work/IDE/arduino/arduino-1.8.10/portable/sketchbook/libraries/Adafruit_ST7735_and_ST7789_Library 
Using library SPI at version 1.0 in folder: /local/data/work/IDE/arduino/arduino-1.8.10/portable/packages/STM32/hardware/stm32/1.6.1/libraries/SPI 
exit status 1
Adafruit_miniTFTWing.h: No such file or directory

You should enable all verbose output in preferences.

mrguen commented 4 years ago

Yes the same issue but

collect2.exe: error: ld returned 1 exit status Multiple libraries were found for "Adafruit_GFX.h" Used: C:\Users\TG\Documents\Arduino\libraries\Adafruit_GFX_Library Multiple libraries were found for "Adafruit_ST7735.h" Used: C:\Users\TG\Documents\Arduino\libraries\Adafruit_ST7735_and_ST7789_Library Multiple libraries were found for "SPI.h" Used: C:\Users\TG\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.7.0\libraries\SPI Multiple libraries were found for "OneButton.h" Used: C:\Users\TG\Documents\Arduino\libraries\OneButton-master Multiple libraries were found for "EEPROM.h" Used: C:\Users\TG\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.7.0\libraries\EEPROM Multiple libraries were found for "Si5351A.h" Used: C:\Users\TG\Documents\Arduino\libraries\Pandauino-Si5351A Multiple libraries were found for "Wire.h" Used: C:\Users\TG\AppData\Local\Arduino15\packages\STM32\hardware\stm32\1.7.0\libraries\Wire Multiple libraries were found for "RotaryEncoder.h" Used: C:\Users\TG\Documents\Arduino\libraries\RotaryEncoder-master exit status 1

And I am sorry I don't get if you have an answer to the problem?

fpistm commented 4 years ago

Copy the full log with All verbose output enable in the Arduino preference

fpistm commented 4 years ago

And "Multiple libraries were found for ..." is not an error. Arduino simply says that it found several library and which one it used.

fpistm commented 4 years ago

And what is exactly the libraries you use? And where they come from?

mrguen commented 4 years ago

Ok, I get it. The assembly is too big when using Maple DFU method.

fpistm commented 4 years ago

yes. Seriously, please before submit an issue read carefully the log. Or at least provide a full log... It really a time consuming issue for nothing... I always pleased to help but when it is really needed.

mrguen commented 4 years ago

Sorry. I am also quite tired with waiting 3 minutes for compilation and so many parameters and upload method that I can't make work that I quite "loose my latin" as we say in french.

mrguen commented 4 years ago

It would be nice at one point to have a summary of working upload methods witht their configuration and appropriate bootloaders depending on board version etc...

fpistm commented 4 years ago

waiting 3 minutes for compilation

On windows this is long, I know but linked to Arduino IDE. On linux for example It took only few seconds to build. You can try to disable your antivirus to speed.

It would be nice at one point to have a summary of working upload methods witht their configuration and appropriate bootloaders depending on board version etc...

The proposed upload method are linked to the target so if it is proposed it works. Anyway for those using bootloader, it is mainly for legacy and it's mainly up to end user to properly install the bootloader. This is documented here: https://github.com/stm32duino/wiki/wiki/Upload-methods#maple-dfu-bootloader

Unfortunately the legacy wiki is offline. Probably it requires to be documented more. Feel free to complete, it is a community project. All contribution are welcome.

I'm also tired and providing lot of support which avoid to target some new dev or tasks ( documentations improvements, ACI tests,...). Time is always the missing ingredients.

J'en perd mon latin aussi des fois :wink:

mrguen commented 4 years ago

As explained here https://forum.arduino.cc/index.php?topic=384321.0

The bottleneck is Comodo firewall... Now I don't know what Arduino is searching over the Net each time it compiles. Also once it has been deactivated and a compilation was done it can be re-activated. It is not always a bottleneck.

mrguen commented 4 years ago

Another reason is that the core is completely recompiled. The sketch copilation takes seconds but the core compilation takes forever.

avandalen commented 4 years ago

I have the same problem Always when there is a compiler error in the sketch, I get the "Multiple libraries were found" error too. After the sketch is ok, than the " Multiple libraries" error disappears. So it is an Arduino IDE issue. I use Arduino version 1.8.10, older versions don't have this issue.

fpistm commented 4 years ago

Multiple libraries were found

is not an error, IDE warns you that there are multiple libraries having the same include entry.

Ex for `Wire.h`
Multiple libraries were found for "Wire.h"
 Used: packages/STM32/hardware/stm32/1.8.0/libraries/Wire
...
Using library Wire at version 1.0 in folder: packages/STM32/hardware/stm32/1.6.1/libraries/Wire 
fpistm commented 4 years ago

I would like it to be reported only: LTC2493.h not found

How you want it to know which library is missing? That is normal you get all those errors like you removed the library inclusion.

It simply told you all unknown type, function,....

Anyway, this should be better you discuss that point on Arduino Forum or GitHub issue.