05-23-2020 02:31 PM - edited 05-24-2020 10:37 AM
Solved! Go to Solution.
05-24-2020 12:19 PM
I am doing some tests and I noticed that the error is upstream ...
If I do an empty sketch where I only include the library with #include "bsec.h" the compiler does not give errors (so the library is supposed to be read correctly).
But as soon as I create an object of class Bsec with the code "Bsec iaqSensor;" then the compiler gives error (the following to be precise).
********************************************************************************************************************************************************
Arduino:1.8.9 (Windows 10), Scheda:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), 4MB (FS:2MB OTA:~1019KB), 2, v2 Lower Memory, Disabled, None, Only Sketch, 115200"
c:/users/david/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: sketch\basic.ino.cpp.o:(.text.startup._GLOBAL__sub_I_iaqSensor+0x8): undefined reference to `Bsec::Bsec()'
c:/users/david/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: sketch\basic.ino.cpp.o: in function `_GLOBAL__sub_I_iaqSensor':
C:\Users\david\AppData\Local\Temp\arduino_modified_sketch_894290/basic.ino:19: undefined reference to `Bsec::Bsec()'
collect2.exe: error: ld returned 1 exit status
exit status 1
Errore durante la compilazione per la scheda NodeMCU 1.0 (ESP-12E Module).
********************************************************************************************************************************************************
05-26-2020 03:52 PM
Hello,
I have the same issue and I am completly stuck. Tests done with IDE1.8.11
Compiling the "basic example" for Arduino Mega is OK but download not tested as I don't have got one
Compiling for "basic example" ESP8266 give the same error as Davide.
Compiling an empty sketch with only #include "bsec.h" and the object of class Bsec declared with the code "Bsec iaqSensor;" is OK
Issue begin when I add "iaqSensor.begin(BME680_I2C_ADDR_PRIMARY, Wire); " (see sketch hereunder). When compilator starts part "Linking everything together..."
******sketch***************************************************************
#include "bsec.h"
Bsec iaqSensor;
String output;
void setup(void)
{
Serial.begin(115200);
Wire.begin();
iaqSensor.begin(BME680_I2C_ADDR_PRIMARY, Wire);
}
void loop(void)
{
}
********************Errors returned******************
c:/users/ybourdais/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\YBOURD~1\AppData\Local\Temp\arduino_build_117553\libraries\BSEC-Arduino-library-master\bsec.cpp.o: in function `Bsec::i2cRead(unsigned char, unsigned char, unsigned char*, unsigned short)':
C:\Users\ybourdais\Documents\Arduino\libraries\BSEC-Arduino-library-master\src/bsec.cpp:552: undefined reference to `bsec_init'
c:/users/ybourdais/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\ybourdais\Documents\Arduino\libraries\BSEC-Arduino-library-master\src/bsec.cpp:561: undefined reference to `bsec_get_version'
c:/users/ybourdais/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\YBOURD~1\AppData\Local\Temp\arduino_build_117553\libraries\BSEC-Arduino-library-master\bsec.cpp.o: in function `Bsec::beginCommon()':
C:\Users\ybourdais\Documents\Arduino\libraries\BSEC-Arduino-library-master\src/bsec.cpp:155: undefined reference to `bsec_init'
c:/users/ybourdais/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\ybourdais\Documents\Arduino\libraries\BSEC-Arduino-library-master\src/bsec.cpp:158: undefined reference to `bsec_get_version'
collect2.exe: error: ld returned 1 exit status
Utilisation de la bibliothèque BSEC-Arduino-library-master version 1.5.1474 dans le dossier: C:\Users\ybourdais\Documents\Arduino\libraries\BSEC-Arduino-library-master
Utilisation de la bibliothèque Wire version 1.0 dans le dossier: C:\Users\ybourdais\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\Wire
Utilisation de la bibliothèque SPI version 1.0 dans le dossier: C:\Users\ybourdais\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\SPI
exit status 1
Erreur de compilation pour la carte Generic ESP8266 Module
Thank you for your help
Yann
05-26-2020 04:09 PM - edited 05-27-2020 09:24 AM
When using Arduino IDE v1.8.9, it is no longer needed to replace the arduino-builder ".exe" file as it supports libraries by default, but you still need to manually add the "compiler.libraries.ldflags" to your platform.txt file and "*libalgobsec.a:(.literal.* .text.*)" to your eagle.app.v6.common.ld.h file.
It would be helpful to enable verbose and share some data from the console log to verify that the BSEC library is successfully included in your toolchain, especially the linking command(s) under "Linking everything together...". For example in my setup, the last two arguments shown below indicate the valid path to my libalgobsec.a file for the ESP8266 and that the library is effectively included:
Linking everything together... [...] [...] -lm -lc -lgcc "-LC:\\Users\\user\\Documents\\Arduino\\libraries\\BSEC_Software_Library\\src\\esp8266" -lalgobsec [...] [...] Creating BIN file [...]
05-27-2020 09:10 AM - edited 05-27-2020 09:31 AM
Hi,
thanks for your answer.
Here is the detailed error message (full version should be attached, but not sure it's loaded correctly... I can't see it in the post).
I specify that in my case, unlike Yannbou, the error appears if I declare Bsec iaqSensor; (in his case fill in correctly with this declaration).
************************************************************************************************************************
Linking everything together...
"C:\\Users\\david\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\2.5.0-4-b40a506/bin/xtensa-lx106-elf-gcc" -CC -E -P -DVTABLES_IN_FLASH "C:\\Users\\david\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.1/tools/sdk/ld/eagle.app.v6.common.ld.h" -o "C:\\Users\\david\\AppData\\Local\\Temp\\arduino_build_524158/local.eagle.app.v6.common.ld"
"C:\\Users\\david\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\2.5.0-4-b40a506/bin/xtensa-lx106-elf-gcc" -fno-exceptions -Wl,-Map "-Wl,C:\\Users\\david\\AppData\\Local\\Temp\\arduino_build_524158/basic.ino.map" -g -w -Os -nostdlib -Wl,--no-check-sections -u app_entry -u _printf_float -u _scanf_float -Wl,-static "-LC:\\Users\\david\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.1/tools/sdk/lib" "-LC:\\Users\\david\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.1/tools/sdk/lib/NONOSDK22x_190703" "-LC:\\Users\\david\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.1/tools/sdk/ld" "-LC:\\Users\\david\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.1/tools/sdk/libc/xtensa-lx106-elf/lib" -Teagle.flash.4m2m.ld -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read -o "C:\\Users\\david\\AppData\\Local\\Temp\\arduino_build_524158/basic.ino.elf" -Wl,--start-group "C:\\Users\\david\\AppData\\Local\\Temp\\arduino_build_524158\\sketch\\basic.ino.cpp.o" "C:\\Users\\david\\AppData\\Local\\Temp\\arduino_build_524158\\libraries\\Wire\\Wire.cpp.o" "C:\\Users\\david\\AppData\\Local\\Temp\\arduino_build_524158\\libraries\\SPI\\SPI.cpp.o" "C:\\Users\\david\\AppData\\Local\\Temp\\arduino_build_524158\\core\\core.a" -lhal -lphy -lpp -lnet80211 -llwip2-536-feat -lwpa -lcrypto -lmain -lwps -lbearssl -laxtls -lespnow -lsmartconfig -lairkiss -lwpa2 -lstdc++ -lm -lc -lgcc "-LC:\\Users\\david\\Documents\\Arduino\\libraries\\BSEC-Arduino-library-1.5.1474\\src\\esp8266" -lalgobsec -lalgobsec -Wl,--end-group "-LC:\\Users\\david\\AppData\\Local\\Temp\\arduino_build_524158"
c:/users/david/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\david\AppData\Local\Temp\arduino_build_524158\sketch\basic.ino.cpp.o:(.text.startup._GLOBAL__sub_I_iaqSensor+0x4): undefined reference to `Bsec::Bsec()'
c:/users/david/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\david\AppData\Local\Temp\arduino_build_524158\sketch\basic.ino.cpp.o: in function `_GLOBAL__sub_I_iaqSensor':
C:\Users\david\AppData\Local\Temp\arduino_modified_sketch_401029/basic.ino:4: undefined reference to `Bsec::Bsec()'
collect2.exe: error: ld returned 1 exit status
Uso la libreria BSEC-Arduino-library-1.5.1474 alla versione 1.5.1474 nella cartella: C:\Users\david\Documents\Arduino\libraries\BSEC-Arduino-library-1.5.1474
Uso la libreria Wire alla versione 1.0 nella cartella: C:\Users\david\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\Wire
Uso la libreria SPI alla versione 1.0 nella cartella: C:\Users\david\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\SPI
exit status 1
Errore durante la compilazione per la scheda NodeMCU 1.0 (ESP-12E Module).
************************************************************************************************************************
For completeness I also insert the parts of the modified platform.txt and eagle.ld files (maybe they are wrong ...).