当前位置: 技术问答>linux和unix
ubuntu 下的驱动编译出错!
来源: 互联网 发布时间:2016-07-14
本文导语: ubuntu 版本 9.04 内核 2.6.28-13-generic /usr/src目录: root@wjp-desktop:/usr/src# ls linux-headers-2.6.28-13 linux-headers-2.6.28-16-generic linux-headers-2.6.28-13-generic linux-source-2.6.28.tar.bz2 linux-headers-2.6.28-16 编译用的头文...
ubuntu 版本 9.04 内核 2.6.28-13-generic
/usr/src目录:
root@wjp-desktop:/usr/src# ls
linux-headers-2.6.28-13 linux-headers-2.6.28-16-generic
linux-headers-2.6.28-13-generic linux-source-2.6.28.tar.bz2
linux-headers-2.6.28-16
编译用的头文件应该在linux-headers-2.6.28-13-generic下面吧?
hello.c
编译:
gcc -c -I /usr/src/linux-headers-2.6.28-13-generic/include/ hello.c
然后报一大堆错误,什么申明参数不存在之类的,是怎么回事?
/usr/src目录:
root@wjp-desktop:/usr/src# ls
linux-headers-2.6.28-13 linux-headers-2.6.28-16-generic
linux-headers-2.6.28-13-generic linux-source-2.6.28.tar.bz2
linux-headers-2.6.28-16
编译用的头文件应该在linux-headers-2.6.28-13-generic下面吧?
hello.c
#ifndef _KERNEL_
#define _KERNEL_
#endif
#ifndef MODULE
#define MODULE
#endif
#include
#include
#include
#include
MODULE_LICENSE("GPL");
int text_init(void)
{
printk("Hello linux kernel!");
return 0;
}
void text_cleanup(void)
{
printk("Goodbye!kernel!")
}
module_init(text_init);
module_exit(text_cleanup);
编译:
gcc -c -I /usr/src/linux-headers-2.6.28-13-generic/include/ hello.c
然后报一大堆错误,什么申明参数不存在之类的,是怎么回事?
|
驱动不是这么编译的。。
具体写法 参考:
http://blog.csdn.net/pottichu/archive/2007/11/19/1892245.aspx
具体写法 参考:
http://blog.csdn.net/pottichu/archive/2007/11/19/1892245.aspx
|
驱动的编译方式和普通的应用程序是有区别的。
$(MAKE) -C $(KDIR) M=$(PWD)
-C 表示 make $(KDIR) 目录, M=$(PWD) 表示模块在当前目录。
obj-m 表示 按照模块方式编译
$(MAKE) -C $(KDIR) M=$(PWD)
-C 表示 make $(KDIR) 目录, M=$(PWD) 表示模块在当前目录。
obj-m 表示 按照模块方式编译
|
哈哈,谢谢了,我刚才还想发帖求个Hello程序呢,刚装好Linux,总想试一把,我先试试。
|
楼主你好强大啊,我以后跟你混了,有什么问题尽管上CSDN问了,这里这么多的大牛,最好是附上代码的那种,反正都是一个copy,粘贴的功夫,先谢谢了。我肯定帮顶的。