阅读:1289回复:7
关于编译的问题!!!!
我是个菜鸟!!!!问一个问题,我在看<<LINUX DEVICE DRIVERS>>这本书时,编译里面的例子通不过,为什么?????
比如最简单的: define module #include <linux/module.h> int init_module(void) { printk(\"<1>hello,world\\n\");return 0;} void cleanup_module { printk(\"<1>goodbye cruel world\\n\");} |
|
沙发#
发布于:2003-03-11 19:57
我是个菜鸟!!!!问一个问题,我在看<<LINUX DEVICE DRIVERS>>这本书时,编译里面的例子通不过,为什么????? 你写错了! 第一句应该为: #define MODULE <-----------是大写, 而且不要掉了# |
|
|
板凳#
发布于:2003-03-11 21:22
还有一定要注意
gcc默认的include目录和编译模块的include目录不一样,前一个是 /usr/include ,而后一个是/usr/src/linux-2.x.x/include 所以编译的时候一定要在gcc中加入一个编译选项-I/usr/src/linux-2.x.x/include |
|
地板#
发布于:2003-03-12 22:08
还有一定要注意通常是/usr/src/LINUX-VERSION(linux)/include拷贝到/usr/include下, 这不是问题。 通常做驱动的时候要加上选项-O8(大于3就可) 还有为了移植加-DLINUX, 另一个选项是-D__KERENLD__; 为了获得最大的报警, 可加上-Wall。 基本上就是这些选项了 :D :D |
|
|
地下室#
发布于:2003-03-15 10:23
我的内核版本是2.4.14-18的redhat linux 8.0,照你的办法还是通不过!!!!
|
|
5楼#
发布于:2003-03-18 12:52
我的内核版本是2.4.14-18的redhat linux 8.0,照你的办法还是通不过!!!!上面的例子在2。0和2。2的可通过的, 2。4的应该写法有些不同, 不过思想是一样的 |
|
|
6楼#
发布于:2003-03-18 21:48
你写的是一个简单的驱动程序,代码有一点小问题,不过不会是编译不通过的理由,我试过了,你的代码可以编译过去,而且还可以用insmod/rmmod命令安装/卸载,工作正常。
|
|
|
7楼#
发布于:2003-03-20 14:35
我也刚开始看这边书,
这个程序我调通了,就是在编译的时候指定使用src里面的头文件就可以了,insmod和rmmod后,信息会打印在 在/var/log/messages中 gcc -DMODULE -D__KERNEL__ -I/usr/src/linux-2.4/include -c hello.c 应该没有问题 :) |
|
|