Jump to content
Sign in to follow this  
ts555

Master Brick kompilieren - Fehlermeldung logging.h

Recommended Posts

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?  

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Teste mal bitte

#define logf(str,  ...) {}

durch

#define logf(str,  ...) ((void)0)

zu ersetzen.

Share this post


Link to post
Share on other sites

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))

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...