Mikrocontroller-Programmierung: Fehler in Bibliothek verhindert das Kompilieren
Für den beim Kompilieren eines ESP-Server-Programms lästigen Fehler "WebAuthentication.cpp undefined reference to `mbedtls_md5_starts'" gibt es eine Lösung.
- Heinz Behling
Das passiert häufig, wenn Sie einen Webserver für ein ESP-Board programmieren: PlatformIO (falls das Framework Arduino
benutzt wird) und einige Versionen der Arduino-IDE brechen den Kompiliervorgang immer wieder mit der folgenden Fehlermeldung ab, obwohl man doch gar keine MD5-Prüfsummen verwendet:
C:\PlatformIO\Projects\Know\BTM/.pio/libdeps/esp32dev/ESP Async WebServer/src/WebAuthentication.cpp:74: undefined reference to `mbedtls_md5_starts' collect2.exe: error: ld returned 1 exit status
Die Ursache dafür liegt nicht etwa in Ihrem Programm, sondern in einer der darin benutzten Software-Bibliotheken, genauer gesagt in ESPAsyncWebServer.h
.
Die schuldige Datei der Bibliothek heißt WebAuthentication.cpp und liegt auf Windows-PCs in Ihrem Dokumente-Ordner unter Arduino/Libraries/ESPAsyncWebServer-master/src. Zur Fehlerbehebung öffnen Sie die Datei in einem Texteditor, etwa Notepad++.
Im Text suchen Sie dann die Zeile mbedtls_md5_starts(&_ctx);
. Ändern Sie sie in mbedtls_md5_starts_ret(&_ctx);
. Speichern nicht vergessen!
Damit ist die lästige MD5-Reklamation beseitigt und der nächste Kompilier-Durchgang sollte fehlerfrei verlaufen. Falls nicht, dann haben Sie doch noch einen Bug im Programm, der dann aber auf Ihr Konto geht.
(hgb)