0
我是内核编程的新手,试图做一个“Hello World”示例。我在start_kernel()中添加了以下代码到init/main.c中qemu中的引导参数
#ifdef HELLO
printk("Hello World");
#endif
现在来我的问题。我如何使用qemu在启动参数中定义HELLO?
我是内核编程的新手,试图做一个“Hello World”示例。我在start_kernel()中添加了以下代码到init/main.c中qemu中的引导参数
#ifdef HELLO
printk("Hello World");
#endif
现在来我的问题。我如何使用qemu在启动参数中定义HELLO?
你需要在编译时定义HELLO
,(或者与地方-DHELLO
作为一个编译器标志或#define HELLO
),否则编译器甚至从来没有看到printk
呼叫并没有它的代码时发出。
基于引导参数,您不能使C编译器在早期启动时重新运行,这是您需要在那里更改HELLO
。
内核没有比在这方面的任何其他C程序不同 - 预处理指令在编译处理,真正早期。
您可以使用this helper macro设置参数,这些参数是一个常规变量,可以在运行时(不是编译时)使用普通旧的if
语句进行引导和测试。
我的问题是,如果有任何的方式来定义HELLO代码后通过使用引导参数 – nist 2012-02-23 17:08:52
@nist编译 - 内核是不是特别的,预处理器仍然发生很早在编译,就像任何其他C程序。您可以在内核中编写普通的'if'语句,就像您可以在任何其他C程序中一样,但是如果您想要而不是'#ifdef' – Flexo 2012-02-23 17:11:42
感谢您的信息。如果我使用if语句,我怎么能让我的内核在不同的bootparameters下运行不同,以及如何添加我自己的启动参数? – nist 2012-02-23 17:19:55