zurück zum Artikel

Mikrocontroller-Programmierung: Fehler in Bibliothek verhindert das Kompilieren

Heinz Behling

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.

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.

Mehr von Make Mehr von Make [1]

(hgb [2])


URL dieses Artikels:
https://www.heise.de/-7520947

Links in diesem Artikel:
[1] https://www.heise.de/make/
[2] mailto:hgb@make-magazin.de