我是内核编程的新手,并试图做一个“Hello World”示例。我在start_kernel()
中将以下代码添加到init / main.c中#ifdef HELLO
printk("Hello World");
#endif
现在回答我的问题。如何使用qemu在引导参数中定义HELLO?
答案 0 :(得分:1)
您需要在编译时定义HELLO
(使用-DHELLO
作为编译器标志或#define HELLO
某处),否则编译器甚至不会看到printk
调用并且不会发出任何代码。
您无法根据引导参数在早期启动时重新运行C编译器,这是您在那里更改HELLO
所需要做的。
在这方面,内核与任何其他C程序没有什么不同 - 预处理程序指令在编译时很早就得到了处理。
您可以使用this helper macro设置参数,这些参数是一个常规变量,可以使用普通的if
语句设置启动并在运行时(非编译时)进行测试。