Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linking issue #6691

Closed
1 task done
stefann63 opened this issue May 4, 2022 · 7 comments
Closed
1 task done

Linking issue #6691

stefann63 opened this issue May 4, 2022 · 7 comments
Labels
IDE: PlaformIO Issue relates to PlatformIO IDE Type: Question Only question

Comments

@stefann63
Copy link

Board

nodemcu-32

Device Description

plain module

Hardware Configuration

no

Version

v2.0.2

IDE Name

PlatformIO

Operating System

Windows10

Flash frequency

40

PSRAM enabled

no

Upload speed

115200

Description

Old project that was compiled/linked properly a year ago, after update doesn't link properly.

Sketch

AsyncWebSocketResponse::AsyncWebSocketResponse(const String& key, AsyncWebSocket *server){
  _server = server;
  _code = 101;
  _sendContentLength = false;

  uint8_t * hash = (uint8_t*)malloc(20);
  if(hash == NULL){
    _state = RESPONSE_FAILED;
    return;
  }
  char * buffer = (char *) malloc(33);
  if(buffer == NULL){
    free(hash);
    _state = RESPONSE_FAILED;
    return;
  }
#ifdef ESP8266
  sha1(key + WS_STR_UUID, hash);
#else
  (String&)key += WS_STR_UUID;
  SHA1_CTX ctx;
  SHA1Init(&ctx);
  SHA1Update(&ctx, (const unsigned char*)key.c_str(), key.length());
  SHA1Final(hash, &ctx);
#endif
  base64_encodestate _state;
  base64_init_encodestate(&_state);
  int len = base64_encode_block((const char *) hash, 20, buffer, &_state);
  len = base64_encode_blockend((buffer + len), &_state);
  addHeader(WS_STR_CONNECTION, WS_STR_UPGRADE);
  addHeader(WS_STR_UPGRADE, "websocket");
  addHeader(WS_STR_ACCEPT,buffer);
  free(buffer);
  free(hash);
}

Debug Message

14:33:36 **** Build of configuration Default for project SAmaster ****
platformio -f -c eclipse run 
Processing nodemcu-32s (platform: espressif32; board: nodemcu-32s; framework: arduino)
--------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/nodemcu-32s.html
PLATFORM: Espressif 32 (4.2.0) > NodeMCU-32S
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-arduinoespressif32 3.20002.220503 (2.0.2) 
 - tool-esptoolpy 1.30300.0 (3.3.0) 
 - toolchain-xtensa-esp32 8.4.0+2021r2-patch3
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 38 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <ArduinoJson> 6.19.4
|-- <AsyncTCP> 1.1.1
|-- <ESP Async WebServer> 1.2.3
|   |-- <AsyncTCP> 1.1.1
|   |-- <FS> 2.0.0
|   |-- <WiFi> 2.0.0
|   |-- <ArduinoJson> 6.19.4
|-- <WiFi> 2.0.0
|-- <Ticker> 2.0.0
|-- <Wire> 2.0.0
|-- <EEPROM> 2.0.0
|-- <Update> 2.0.0
|-- <ParserCMD>
|-- <FS> 2.0.0
|-- <SPIFFS> 2.0.0
|   |-- <FS> 2.0.0
|-- <DNSServer> 2.0.0
|   |-- <WiFi> 2.0.0
|-- <SPI> 2.0.0
Building in release mode
Compiling .pio\build\nodemcu-32s\src\Flex6K.cpp.o
Compiling .pio\build\nodemcu-32s\src\ProcessCmd.cpp.o
Compiling .pio\build\nodemcu-32s\src\SAmaster.cpp.o
Compiling .pio\build\nodemcu-32s\src\TinyXML.cpp.o
Compiling .pio\build\nodemcu-32s\src\Utils.cpp.o
Compiling .pio\build\nodemcu-32s\src\WebServer.cpp.o
Compiling .pio\build\nodemcu-32s\src\WiFiService.cpp.o
Compiling .pio\build\nodemcu-32s\src\WiFi_SANet.cpp.o
Compiling .pio\build\nodemcu-32s\src\telnet.cpp.o
Compiling .pio\build\nodemcu-32s\lib5d4\AsyncTCP\AsyncTCP.cpp.o
Compiling .pio\build\nodemcu-32s\lib9cb\FS\FS.cpp.o
Compiling .pio\build\nodemcu-32s\lib9cb\FS\vfs_api.cpp.o
Compiling .pio\build\nodemcu-32s\libd96\WiFi\WiFi.cpp.o
Compiling .pio\build\nodemcu-32s\libd96\WiFi\WiFiAP.cpp.o
Compiling .pio\build\nodemcu-32s\libd96\WiFi\WiFiClient.cpp.o
Compiling .pio\build\nodemcu-32s\libd96\WiFi\WiFiGeneric.cpp.o
Compiling .pio\build\nodemcu-32s\libd96\WiFi\WiFiMulti.cpp.o
Archiving .pio\build\nodemcu-32s\lib5d4\libAsyncTCP.a
Compiling .pio\build\nodemcu-32s\libd96\WiFi\WiFiSTA.cpp.o
Archiving .pio\build\nodemcu-32s\lib9cb\libFS.a
Compiling .pio\build\nodemcu-32s\libd96\WiFi\WiFiScan.cpp.o
Compiling .pio\build\nodemcu-32s\libd96\WiFi\WiFiServer.cpp.o
Compiling .pio\build\nodemcu-32s\libd96\WiFi\WiFiUdp.cpp.o
Compiling .pio\build\nodemcu-32s\lib4d1\ESP Async WebServer\AsyncEventSource.cpp.o
Compiling .pio\build\nodemcu-32s\lib4d1\ESP Async WebServer\AsyncWebSocket.cpp.o
Compiling .pio\build\nodemcu-32s\lib4d1\ESP Async WebServer\SPIFFSEditor.cpp.o
Compiling .pio\build\nodemcu-32s\lib4d1\ESP Async WebServer\WebAuthentication.cpp.o
Compiling .pio\build\nodemcu-32s\lib4d1\ESP Async WebServer\WebHandlers.cpp.o
Compiling .pio\build\nodemcu-32s\lib4d1\ESP Async WebServer\WebRequest.cpp.o
Compiling .pio\build\nodemcu-32s\lib4d1\ESP Async WebServer\WebResponses.cpp.o
Archiving .pio\build\nodemcu-32s\libd96\libWiFi.a
Compiling .pio\build\nodemcu-32s\lib4d1\ESP Async WebServer\WebServer.cpp.o
Compiling .pio\build\nodemcu-32s\lib1fc\Ticker\Ticker.cpp.o
Archiving .pio\build\nodemcu-32s\lib1fc\libTicker.a
Compiling .pio\build\nodemcu-32s\lib5df\Wire\Wire.cpp.o
Compiling .pio\build\nodemcu-32s\libddc\EEPROM\EEPROM.cpp.o
Archiving .pio\build\nodemcu-32s\lib5df\libWire.a
Compiling .pio\build\nodemcu-32s\lib496\Update\HttpsOTAUpdate.cpp.o
Compiling .pio\build\nodemcu-32s\lib496\Update\Updater.cpp.o
Compiling .pio\build\nodemcu-32s\libfd9\ParserCMD\ParserCmd.cpp.o
Compiling .pio\build\nodemcu-32s\lib861\SPIFFS\SPIFFS.cpp.o
Compiling .pio\build\nodemcu-32s\lib939\DNSServer\DNSServer.cpp.o
Archiving .pio\build\nodemcu-32s\libfd9\libParserCMD.a
Archiving .pio\build\nodemcu-32s\libddc\libEEPROM.a
Compiling .pio\build\nodemcu-32s\lib6e8\SPI\SPI.cpp.o
Archiving .pio\build\nodemcu-32s\libFrameworkArduinoVariant.a
Compiling .pio\build\nodemcu-32s\FrameworkArduino\Esp.cpp.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\FirmwareMSC.cpp.o
Archiving .pio\build\nodemcu-32s\lib6e8\libSPI.a
Archiving .pio\build\nodemcu-32s\lib496\libUpdate.a
Compiling .pio\build\nodemcu-32s\FrameworkArduino\FunctionalInterrupt.cpp.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\HWCDC.cpp.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\HardwareSerial.cpp.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\IPAddress.cpp.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\IPv6Address.cpp.o
Archiving .pio\build\nodemcu-32s\lib939\libDNSServer.a
Compiling .pio\build\nodemcu-32s\FrameworkArduino\MD5Builder.cpp.o
Archiving .pio\build\nodemcu-32s\lib861\libSPIFFS.a
Compiling .pio\build\nodemcu-32s\FrameworkArduino\Print.cpp.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\Stream.cpp.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\StreamString.cpp.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\USB.cpp.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\USBCDC.cpp.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\USBMSC.cpp.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\WMath.cpp.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\WString.cpp.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\base64.cpp.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\cbuf.cpp.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-adc.c.o
Archiving .pio\build\nodemcu-32s\lib4d1\libESP Async WebServer.a
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-bt.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-cpu.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-dac.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-gpio.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-i2c-slave.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-i2c.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-ledc.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-matrix.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-misc.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-psram.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-rmt.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-sigmadelta.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-spi.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-time.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-timer.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-tinyusb.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-touch.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\esp32-hal-uart.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\firmware_msc_fat.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\libb64\cdecode.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\libb64\cencode.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\main.cpp.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\stdlib_noniso.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\wiring_pulse.c.o
Compiling .pio\build\nodemcu-32s\FrameworkArduino\wiring_shift.c.o
Archiving .pio\build\nodemcu-32s\libFrameworkArduino.a
Linking .pio\build\nodemcu-32s\firmware.elf
c:/users/stefan/.platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: .pio\build\nodemcu-32s\lib4d1\libESP Async WebServer.a(AsyncWebSocket.cpp.o):(.literal._ZN22AsyncWebSocketResponseC2ERK6StringP14AsyncWebSocket+0x10): undefined reference to `SHA1Init'
c:/users/stefan/.platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: .pio\build\nodemcu-32s\lib4d1\libESP Async WebServer.a(AsyncWebSocket.cpp.o):(.literal._ZN22AsyncWebSocketResponseC2ERK6StringP14AsyncWebSocket+0x14): undefined reference to `SHA1Update'
c:/users/stefan/.platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: .pio\build\nodemcu-32s\lib4d1\libESP Async WebServer.a(AsyncWebSocket.cpp.o):(.literal._ZN22AsyncWebSocketResponseC2ERK6StringP14AsyncWebSocket+0x18): undefined reference to `SHA1Final'
c:/users/stefan/.platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: .pio\build\nodemcu-32s\lib4d1\libESP Async WebServer.a(AsyncWebSocket.cpp.o): in function `AsyncWebSocketResponse::AsyncWebSocketResponse(String const&, AsyncWebSocket*)':
O:\Dropbox\eclipse-ws\SAmaster/.pio/libdeps/nodemcu-32s/ESP Async WebServer/src/AsyncWebSocket.cpp:1269: undefined reference to `SHA1Init'
c:/users/stefan/.platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: O:\Dropbox\eclipse-ws\SAmaster/.pio/libdeps/nodemcu-32s/ESP Async WebServer/src/AsyncWebSocket.cpp:1270: undefined reference to `SHA1Update'
c:/users/stefan/.platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: O:\Dropbox\eclipse-ws\SAmaster/.pio/libdeps/nodemcu-32s/ESP Async WebServer/src/AsyncWebSocket.cpp:1271: undefined reference to `SHA1Final'
c:/users/stefan/.platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: .pio\build\nodemcu-32s\lib4d1\libESP Async WebServer.a(WebAuthentication.cpp.o):(.literal._ZL6getMD5PhtPc+0x4): undefined reference to `mbedtls_md5_starts'
c:/users/stefan/.platformio/packages/toolchain-xtensa-esp32/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: .pio\build\nodemcu-32s\lib4d1\libESP Async WebServer.a(WebAuthentication.cpp.o): in function `getMD5(unsigned char*, unsigned short, char*)':
O:\Dropbox\eclipse-ws\SAmaster/.pio/libdeps/nodemcu-32s/ESP Async WebServer/src/WebAuthentication.cpp:73: undefined reference to `mbedtls_md5_starts'
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\nodemcu-32s\firmware.elf] Error 1
========================= [FAILED] Took 28.62 seconds =========================
"platformio -f -c eclipse run" terminated with exit code 1. Build might be incomplete.

14:34:05 Build Failed. 10 errors, 4 warnings. (took 29s.43ms)

Other Steps to Reproduce

No response

I have checked existing issues, online documentation and the Troubleshooting Guide

  • I confirm I have checked existing issues, online documentation and Troubleshooting guide.
@stefann63 stefann63 added the Status: Awaiting triage Issue is waiting for triage label May 4, 2022
@lbernstone
Copy link
Contributor

Make sure ESPAsyncWebServer is updated to latest version.

@stefann63
Copy link
Author

Yeah, the problem come after upgrade, update in PlatformIO.
I think the the line "version": "1.2.3" in library.json was not updated.

@VojtechBartoska VojtechBartoska added Type: Question Only question IDE: PlaformIO Issue relates to PlatformIO IDE and removed Status: Awaiting triage Issue is waiting for triage labels May 5, 2022
@VojtechBartoska
Copy link
Collaborator

@stefann63 Can I consider this as solved?

@stefann63
Copy link
Author

Yes, after updating ESPAsyncWebServer manually.
The updated library has same version 1.2.3 as the old one.

@me-no-dev
Copy link
Member

I guess I need to find some time to update it.. 😄

@stefann63
Copy link
Author

@me-no-dev Ще почерпя!

@me-no-dev
Copy link
Member

@me-no-dev Ще почерпя!

Свободното време ми е малко несъществуващо в момента (май от две години насам поне). Има инициатива в компанията да имаме възможност да отделяме време на подобни странични проекти. Стискам палци да стане реалност ;) Първо да стегнем още малко Ардуиното

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
IDE: PlaformIO Issue relates to PlatformIO IDE Type: Question Only question
Projects
None yet
Development

No branches or pull requests

4 participants