ts555 Geschrieben January 24, 2020 at 10:25 Share Geschrieben January 24, 2020 at 10:25 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? Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
photron Geschrieben January 24, 2020 at 10:49 Share Geschrieben January 24, 2020 at 10:49 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? Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
ts555 Geschrieben January 24, 2020 at 23:37 Autor Share Geschrieben January 24, 2020 at 23:37 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. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
photron Geschrieben January 27, 2020 at 10:21 Share Geschrieben January 27, 2020 at 10:21 Teste mal bitte #define logf(str, ...) {} durch #define logf(str, ...) ((void)0) zu ersetzen. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
ts555 Geschrieben January 27, 2020 at 13:18 Autor Share Geschrieben January 27, 2020 at 13:18 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)) Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
photron Geschrieben January 27, 2020 at 15:06 Share Geschrieben January 27, 2020 at 15:06 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 Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
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.