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.

In Pocket speichern vorlesen Druckansicht 3 Kommentare lesen
Lesezeit: 1 Min.
Von
  • 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.

Falls Ihr ESP-Programm die Bibliothek ESPAsyncWebServer benutzt, kann es zu einer Fehlermeldung kommen.

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)