Description
Hardware:
Board: ESP32 Dev Module
Core Installation version: ESP-IDF v4.4-dev-1594-g1d7068e4b-dirty
IDE name: IDF component
Flash Frequency: 40Mhz
PSRAM enabled: no
Upload Speed: 115200
Computer OS: Windows 10
Description:
Unable to compile arduino as idf component.
I am doing library update from 4.2 to the current master 4.4 for idf and arduino but having issue with the arduino esp32 lib to compile with error:
I am able to replicate this issue using simple blink project with one additional idf components.
Arduino WiFi / Server need to be call from idf component cpp file.
Step to reproduce:
- create new blink project
- create components folder
- create new .cpp app_main file and replace .c file
- download the arduino-esp32
- copy the sdkconfig from tools folder
- create new component
- create new clinkage .cpp static file in components with header
- call arduino WiFi.begin / Server.begin in component static function
- call component static function from main function
Observation:
can compile and Serial.println works in main files, also work if added from component.
compile failed if i add WiFi.begin() in the component files.
This issue not happening on the 4.2 release
build the project with error as below:
Building in: ~\eclipse-workspace\blink\build
cmake --build . -- -v
[1/9] cmd.exe /C "cd /D ~\eclipse-workspace\blink\build\bootloader && ~\.espressif\tools\cmake\3.16.4\bin\cmake.exe --build ."
[1/1] cmd.exe /C "cd /D ~\eclipse-workspace\blink\build\bootloader\esp-idf\esptool_py && python C:/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x1000 ~/eclipse-workspace/blink/build/bootloader/bootloader.bin"
Bootloader binary size 0x4300 bytes. 0x2d00 bytes (67%) free.
[2/7] ccache ~\.espressif\tools\xtensa-esp32-elf\esp-2020r3-8.4.0\xtensa-esp32-elf\bin\xtensa-esp32-elf-g++.exe -DHAVE_CONFIG_H -DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\" -Iconfig -I../components/test-comp/include -IC:/esp-idf/components/newlib/platform_include -IC:/esp-idf/components/freertos/include -IC:/esp-idf/components/freertos/port/xtensa/include -IC:/esp-idf/components/esp_hw_support/include -IC:/esp-idf/components/esp_hw_support/include/soc -IC:/esp-idf/components/esp_hw_support/port/esp32/. -IC:/esp-idf/components/heap/include -IC:/esp-idf/components/log/include -IC:/esp-idf/components/lwip/include/apps -IC:/esp-idf/components/lwip/include/apps/sntp -IC:/esp-idf/components/lwip/lwip/src/include -IC:/esp-idf/components/lwip/port/esp32/include -IC:/esp-idf/components/lwip/port/esp32/include/arch -IC:/esp-idf/components/soc/include -IC:/esp-idf/components/soc/esp32/. -IC:/esp-idf/components/soc/esp32/include -IC:/esp-idf/components/hal/esp32/include -IC:/esp-idf/components/hal/include -IC:/esp-idf/components/esp_rom/include -IC:/esp-idf/components/esp_rom/esp32 -IC:/esp-idf/components/esp_common/include -IC:/esp-idf/components/esp_system/include -IC:/esp-idf/components/esp_system/port/soc -IC:/esp-idf/components/esp_system/port/public_compat -IC:/esp-idf/components/esp32/include -IC:/esp-idf/components/driver/include -IC:/esp-idf/components/driver/esp32/include -IC:/esp-idf/components/esp_pm/include -IC:/esp-idf/components/esp_ringbuf/include -IC:/esp-idf/components/efuse/include -IC:/esp-idf/components/efuse/esp32/include -IC:/esp-idf/components/xtensa/include -IC:/esp-idf/components/xtensa/esp32/include -IC:/esp-idf/components/vfs/include -IC:/esp-idf/components/esp_wifi/include -IC:/esp-idf/components/esp_event/include -IC:/esp-idf/components/esp_netif/include -IC:/esp-idf/components/esp_eth/include -IC:/esp-idf/components/tcpip_adapter/include -IC:/esp-idf/components/esp_phy/include -IC:/esp-idf/components/esp_phy/esp32/include -IC:/esp-idf/components/app_trace/include -IC:/esp-idf/components/esp_timer/include -I../components/arduino/variants/esp32 -I../components/arduino/cores/esp32 -I../components/arduino/libraries/ArduinoOTA/src -I../components/arduino/libraries/AsyncUDP/src -I../components/arduino/libraries/BLE/src -I../components/arduino/libraries/BluetoothSerial/src -I../components/arduino/libraries/DNSServer/src -I../components/arduino/libraries/EEPROM/src -I../components/arduino/libraries/ESP32/src -I../components/arduino/libraries/ESPmDNS/src -I../components/arduino/libraries/FFat/src -I../components/arduino/libraries/FS/src -I../components/arduino/libraries/HTTPClient/src -I../components/arduino/libraries/HTTPUpdate/src -I../components/arduino/libraries/LITTLEFS/src -I../components/arduino/libraries/NetBIOS/src -I../components/arduino/libraries/Preferences/src -I../components/arduino/libraries/RainMaker/src -I../components/arduino/libraries/SD_MMC/src -I../components/arduino/libraries/SD/src -I../components/arduino/libraries/SimpleBLE/src -I../components/arduino/libraries/SPIFFS/src -I../components/arduino/libraries/SPI/src -I../components/arduino/libraries/Ticker/src -I../components/arduino/libraries/Update/src -I../components/arduino/libraries/WebServer/src -I../components/arduino/libraries/WiFiClientSecure/src -I../components/arduino/libraries/WiFi/src -I../components/arduino/libraries/WiFiProv/src -I../components/arduino/libraries/Wire/src -IC:/esp-idf/components/spi_flash/include -IC:/esp-idf/components/mbedtls/port/include -IC:/esp-idf/components/mbedtls/mbedtls/include -IC:/esp-idf/components/mbedtls/esp_crt_bundle/include -IC:/esp-idf/components/mdns/include -IC:/esp-idf/components/console -IC:/esp-idf/components/esp_adc_cal/include -IC:/esp-idf/components/wifi_provisioning/include -IC:/esp-idf/components/protocomm/include/common -IC:/esp-idf/components/protocomm/include/security -IC:/esp-idf/components/protocomm/include/transports -IC:/esp-idf/components/bt/common/osi/include -IC:/esp-idf/components/bt/include/esp32/include -IC:/esp-idf/components/bt/host/bluedroid/api/include/api -IC:/esp-idf/components/nvs_flash/include -IC:/esp-idf/components/nghttp/port/include -IC:/esp-idf/components/nghttp/nghttp2/lib/includes -mlongcalls -Wno-frame-address -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wextra -Wno-unused-parameter -Wno-sign-compare -ggdb -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw -Og -fstack-protector -fmacro-prefix-map=~/eclipse-workspace/blink=. -fmacro-prefix-map=C:/esp-idf=IDF -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -std=gnu++11 -fexceptions -fno-rtti -D_GNU_SOURCE -DIDF_VER=\"v4.4-dev-1594-g1d7068e4b-dirty\" -DESP_PLATFORM -DARDUINO=10812 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD=\"ESP32_DEV\" -DARDUINO_VARIANT=\"esp32\" -DESP32 -MD -MT esp-idf/test-comp/CMakeFiles/__idf_test-comp.dir/test-comp.cpp.obj -MF esp-idf\test-comp\CMakeFiles\__idf_test-comp.dir\test-comp.cpp.obj.d -o esp-idf/test-comp/CMakeFiles/__idf_test-comp.dir/test-comp.cpp.obj -c ../components/test-comp/test-comp.cpp
[3/7] cmd.exe /C "cd . && ~\.espressif\tools\cmake\3.16.4\bin\cmake.exe -E remove esp-idf\test-comp\libtest-comp.a && ~\.espressif\tools\xtensa-esp32-elf\esp-2020r3-8.4.0\xtensa-esp32-elf\bin\xtensa-esp32-elf-ar.exe qc esp-idf\test-comp\libtest-comp.a esp-idf/test-comp/CMakeFiles/__idf_test-comp.dir/test-comp.cpp.obj && ~\.espressif\tools\xtensa-esp32-elf\esp-2020r3-8.4.0\xtensa-esp32-elf\bin\xtensa-esp32-elf-ranlib.exe esp-idf\test-comp\libtest-comp.a && cd ."
[4/7] cmd.exe /C "cd /D ~\eclipse-workspace\blink\build\esp-idf\esp32 && python C:/esp-idf/tools/ldgen/ldgen.py --config ~/eclipse-workspace/blink/sdkconfig --fragments C:/esp-idf/components/spi_flash/linker.lf C:/esp-idf/components/esp_gdbstub/linker.lf C:/esp-idf/components/espcoredump/linker.lf C:/esp-idf/components/esp_phy/linker.lf C:/esp-idf/components/esp_system/linker.lf C:/esp-idf/components/esp_system/app.lf C:/esp-idf/components/hal/linker.lf C:/esp-idf/components/esp_event/linker.lf C:/esp-idf/components/esp_wifi/linker.lf C:/esp-idf/components/lwip/linker.lf C:/esp-idf/components/log/linker.lf C:/esp-idf/components/heap/linker.lf C:/esp-idf/components/soc/linker.lf C:/esp-idf/components/esp_hw_support/linker.lf C:/esp-idf/components/esp_pm/linker.lf C:/esp-idf/components/esp_ringbuf/linker.lf C:/esp-idf/components/driver/linker.lf C:/esp-idf/components/xtensa/linker.lf C:/esp-idf/components/esp_common/common.lf C:/esp-idf/components/esp_common/soc.lf C:/esp-idf/components/freertos/linker.lf C:/esp-idf/components/newlib/esp32-spiram-rom-functions-c.lf C:/esp-idf/components/newlib/newlib.lf C:/esp-idf/components/newlib/system_libs.lf C:/esp-idf/components/app_trace/linker.lf C:/esp-idf/components/bt/linker.lf --input C:/esp-idf/components/esp32/ld/esp32.project.ld.in --output ~/eclipse-workspace/blink/build/esp-idf/esp32/ld/esp32.project.ld --kconfig C:/esp-idf/Kconfig --env-file ~/eclipse-workspace/blink/build/config.env --libraries-file ~/eclipse-workspace/blink/build/ldgen_libraries --objdump ~/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-objdump.exe"
[5/7] cmd.exe /C "cd . && ~\.espressif\tools\xtensa-esp32-elf\esp-2020r3-8.4.0\xtensa-esp32-elf\bin\xtensa-esp32-elf-g++.exe -mlongcalls -Wno-frame-address @CMakeFiles\blink.elf.rsp -o blink.elf && cd ."
FAILED: blink.elf
cmd.exe /C "cd . && ~\.espressif\tools\xtensa-esp32-elf\esp-2020r3-8.4.0\xtensa-esp32-elf\bin\xtensa-esp32-elf-g++.exe -mlongcalls -Wno-frame-address @CMakeFiles\blink.elf.rsp -o blink.elf && cd ."
~/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/test-comp/libtest-comp.a(test-comp.cpp.obj):(.literal._ZN8testcomp4funcEv+0xc): undefined reference to `WiFi'
~/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/test-comp/libtest-comp.a(test-comp.cpp.obj):(.literal._ZN8testcomp4funcEv+0x10): undefined reference to `WiFiSTAClass::begin(char const*, char const*, int, unsigned char const*, bool)'
~/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/test-comp/libtest-comp.a(test-comp.cpp.obj): in function `testcomp::func()':
~\eclipse-workspace\blink\build/../components/test-comp/test-comp.cpp:16: undefined reference to `WiFiSTAClass::begin(char const*, char const*, int, unsigned char const*, bool)'
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
Build complete (4 errors, 0 warnings): ~\eclipse-workspace\blink\build
Total time taken to build the project: 16,746 ms
~some path detail are omitted from the logs
edit: some correction and formatting.
thanks!