I donβt know how to activate printk() - what were you looking for on Google? Among other things, I found this one , which apparently implies that printk() almost always available (but you should note messages with the appropriate level, and there is probably control over which levels are displayed on the console).
The square brackets in the macro name are unorthodox - and therefore probably the extension specific to your system.
Reading between the lines, it is likely that you are talking about the Linux kernel and therefore GNU Make, but you would help everyone if you said such things.
Designation := is the direct assignment of a variable. RHS is evaluated when a string is read and processed, and not when a macro is used, as is usually the case. This means that if macros are specified in RHS, subsequent changes to these macros will not affect the value of this macro. Consider:
CFLAGS = ${OFLAGS} ${IFLAGS} ${DFLAGS} ${WFLAGS} CFLAGS := ${OFLAGS} ${IFLAGS} ${DFLAGS} ${WFLAGS}
The first option states that CFLAGS will be formed from the 4 named macros (well, in fact, it simply copies the line ready for further expansion), but does not expand the values ββuntil the (presumably) compilation of the C command is used.
The second variation immediately looks for the values ββof 4 macros at the moment of reading the line and expands it. Subsequent changes to 4 related macros are not reflected in CFLAGS.
The designation += adds RHS to the macro, not just replacing it.
Jonathan leffler
source share