Вам нужно определить HELLO
во время компиляции (либо с -DHELLO
в качестве флага компилятора, либо с #define HELLO
где-нибудь), в противном случае компилятор никогда даже не увидит вызов printk
и никакой код для него не будет выдан.
Невозможно перезапустить компилятор C во время начальной загрузки на основе параметров загрузки, что вам и нужно сделать, чтобы изменить HELLO
там.
Ядро ничем не отличается от любой другой программы на C в этом отношении - директивы препроцессора обрабатываются очень рано при компиляции.
Вы можете настроить параметры с помощью этого вспомогательного макроса , которые являются обычной переменной, которую можно установить при загрузке и протестировать во время выполнения (не во время компиляции) с помощью простого старого оператора if
.