ts555 Posted January 24, 2020 at 10:25 AM Posted January 24, 2020 at 10:25 AM Ich habe eine Build-Umgebung entsprechend dem Tinkerforge-Tutorial aufgesetzt. Das Kompilieren von Bricklets funktioniert bereits. Jetzt habe ich versucht, die Master Brick Firmware zu kompilieren. Dabei erhalte ich folgende Fehlermeldung: In file included from ......./src/extensions/wifi/wifi_data.c:31:0: ......./src/logging/logging.h:118:25: error: expected identifier or '(' before '{' token #define logf(str, ...) {} ^ Der Fehler ist vermutlich nicht in logging.h selbst zu suchen? Er wird wahrscheinlich durch ein Problem an anderer Stelle verursacht? Quote
photron Posted January 24, 2020 at 10:49 AM Posted January 24, 2020 at 10:49 AM Ich kann das Problem hier unter Linux mit Docker und dem aktuellen GitHub Stand der Master Brick Firmware nicht nachstellen. Hast du dir mit build_environment_setup.sh unter Linux oder in einer VM die Build Umgebung ausgesetzt, oder nutzt du das Docker Image? Quote
ts555 Posted January 24, 2020 at 11:37 PM Author Posted January 24, 2020 at 11:37 PM Ich habe innerhalb einer VM (Debian 10) die Build-Umgebung aufgesetzt. Das Skript ist hierbei nicht unmittelbar durchgelaufen, da ein paar Pakete durch aktuellere (mit neuem Namen) ersetzt werden mussten... Ich habe jetzt eine Lösung gefunden: Der Fehler wurde ausschließlich bei logf(...) gemeldet - nicht bei den anderen #defines. Daraus würde ich schließen, dass der Compiler "logf" wohl als "Logarithmus mit Wertebereich double" interpretiert. Denn es funktioniert nun, wenn ich einfach alle "logf(" beispielsweise durch "logfatal(" ersetze. Quote
photron Posted January 27, 2020 at 10:21 AM Posted January 27, 2020 at 10:21 AM Teste mal bitte #define logf(str, ...) {} durch #define logf(str, ...) ((void)0) zu ersetzen. Quote
ts555 Posted January 27, 2020 at 01:18 PM Author Posted January 27, 2020 at 01:18 PM Wegen dem leeren { } - Ausdruck? Das scheint es nicht zu sein. Deinen Vorschlag habe ich jetzt zwar noch nicht getestet. Aber ich möchte ja eigentlich die Debugging-Meldungen aktivieren (das war der Grund für das Neukompilieren). Auch bei dem anderen if-Zweig kommt dann der Fehler. Die runde Klammer habe ich testweise noch eingefügt: error: expected expression before 'do' #define logf(str, ...) (do{ printf("<F> " str, ##__VA_ARGS__); }while(0)) Quote
photron Posted January 27, 2020 at 03:06 PM Posted January 27, 2020 at 03:06 PM Okay, mit einer neueren GCC Version können wir hier das Problem nachstellen. Es ist jetzt in der aktuellen GitHub Version behoben. https://github.com/Tinkerforge/master-brick/commit/80ded4b682ffb063fe88133eecf81c7770a9b6d2 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.