LDD3_No1.:Hello,World的问题
2009-11-27 21:49
232 查看
都说是经典,忍不住, 前几天看了LDD3。
老习惯,开篇总是HELLO,WORLD。按照作者的提示:使用标准内核,到kernel.org上下载了最新的稳定版本,make oldconfig,不成功,make menuconfig,不成功。晕!
想想算了,我的vmware中安装的ubuntn即是2.6内核,不编译也应该可的。
(编译内核忒麻烦,在我的所有经历中,不成功是正常的,个人感觉有时候在浪费时间)
遂抄书:
按照LDD3提供的例子中的MAKEFILE重新写:
% make
% su
root# insmod ./hello.ko
???没有反应
%tail /var/log/messages
也没有看到结果,baidu一下,把hello.c中的printk(KERN_ALERT "Hello, world/n")修改成:
printk(KERN_INFO "Hello, world/n");
重新make
root# insmod ./hello.ko
终端中还是没有信息,不过:
%tail /var/log/messages
在最后一行可以看到:
Hello,world
查了一下:
KERN_ALERT和KERN_INFO等宏,表示优先级,具体如下:
0-7,优先级依次递减。
不过有网友说,在x86机器上,只能通过:
dmesg 或者
老习惯,开篇总是HELLO,WORLD。按照作者的提示:使用标准内核,到kernel.org上下载了最新的稳定版本,make oldconfig,不成功,make menuconfig,不成功。晕!
想想算了,我的vmware中安装的ubuntn即是2.6内核,不编译也应该可的。
(编译内核忒麻烦,在我的所有经历中,不成功是正常的,个人感觉有时候在浪费时间)
遂抄书:
#include <linux/init.h> #include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_ALERT "Hello, world/n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "Goodbye, cruel world/n"); } module_init(hello_init); module_exit(hello_exit);
按照LDD3提供的例子中的MAKEFILE重新写:
obj-m := hello.o KERNELDIR ?= /lib/modules/$(shell uname -r)/build //内核源代码的位置 PWD := $(shell pwd) //模块源代码的位置 all: $(MAKE) -C $(KERNELDIR) M=$(PWD) clean: rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
% make
% su
root# insmod ./hello.ko
???没有反应
%tail /var/log/messages
也没有看到结果,baidu一下,把hello.c中的printk(KERN_ALERT "Hello, world/n")修改成:
printk(KERN_INFO "Hello, world/n");
重新make
root# insmod ./hello.ko
终端中还是没有信息,不过:
%tail /var/log/messages
在最后一行可以看到:
Hello,world
查了一下:
KERN_ALERT和KERN_INFO等宏,表示优先级,具体如下:
#define KERN_EMERG "<0>" /* system is unusable */ #define KERN_ALERT "<1>" /* action must be taken immediately */ #define KERN_CRIT "<2>" /* critical conditions */ #define KERN_ERR "<3>" /* error conditions */ #define KERN_WARNING "<4>" /* warning conditions */ #define KERN_NOTICE "<5>" /* normal but significant condition */ #define KERN_INFO "<6>" /* informational */ #define KERN_DEBUG "<7>" /* debug-level messages */
0-7,优先级依次递减。
不过有网友说,在x86机器上,只能通过:
dmesg 或者
tail /var/log/message 查看
相关文章推荐
- ldd3 读书笔记 —— Hello, world!
- 7.17问题 1083: Hello, world!
- 问题 B: Hello World for U
- android7.0闪退问题java.lang.SecurityException: MODE_WORLD_READABLE no longer supported
- HelloWorld.c:1:20: fatal error: studio.h: No such file or directory
- Hibernate+HelloWorld 遇到的问题
- SpringMVC Helloworld注解和404问题
- ./HelloWorld line 1: syntax error: "(" unexpected问题解决
- OSGi Bundle helloworld所遇到问题
- 项目文件.NET下编译C++代码时出现fatal error C1083: 无法打开包括文件:“xuhk_JNIHelloWorld.h”: No such file or directory错误的解决方法。
- ROS Arduino HelloWorld例程的一些问题
- .NET下编译C++代码时出现fatal error C1083: 无法打开包括文件:“xuhk_JNIHelloWorld.h”: No such file or directory错误的解决方法。
- Spring MVC helloWorld中遇到的问题及解决办法
- 03、一步一步学thinkjs之创建一个新页面no hello world
- struts2异常 no action named HelloWorld .......
- android7.0闪退问题java.lang.SecurityException: MODE_WORLD_READABLE no longer supported
- C语言网 问题 1083: Hello, world!
- 代码练习系列:问题 B Hello World for U
- nginx hello world模块编译运行的问题
- [Android应用] 问题1:Could not find helloworld.apk