当前位置: 技术问答>linux和unix
驱动程序头文件的问题
来源: 互联网 发布时间:2016-08-04
本文导语: 在Ubuntu下写驱动程序,代码如下: #include static __init int init_module(void) { printk(KERN_DEBUG "Hello, kernel!n"); return 0; } static __exit void clean_module(void) { printk(KERN_DEBUG "Good-bye kernel!n"); } module_init(init_module); module_exit(cl...
在Ubuntu下写驱动程序,代码如下:
make文件是这样写的:
gcc -D__KERNEL__ -I/usr/src/linux-source-2.6.24/include -DMODULE -O2 -c hello.c
#include
static __init int init_module(void)
{
printk(KERN_DEBUG "Hello, kernel!n");
return 0;
}
static __exit void clean_module(void)
{
printk(KERN_DEBUG "Good-bye kernel!n");
}
module_init(init_module);
module_exit(clean_module);
make文件是这样写的:
gcc -D__KERNEL__ -I/usr/src/linux-source-2.6.24/include -DMODULE -O2 -c hello.c
|
ldd3上有讲:
http://elinux.cn/book/ldd3/linuxdrive3-CHP-2-SECT-2.html
http://elinux.cn/book/ldd3/linuxdrive3-CHP-2-SECT-4.html
http://elinux.cn/book/ldd3/linuxdrive3-CHP-2-SECT-2.html
http://elinux.cn/book/ldd3/linuxdrive3-CHP-2-SECT-4.html
|
若是2.6的内核,则用以下命令编译:
make -C /opt/bcm97405/kernel/stblinux-2.6.18 M=`pwd`
#Makefile for 2.6 kernel module
obj-m := module_name_you_want.o
module_name_you_want-objs := hello.o other_C_code_name.o
好象头文件包含不全,你试试以下链接里的代码,若是2.4的内核参考:
参考: http://blog.csdn.net/wenxy1/archive/2007/09/19/1791043.aspx
2. 内核源码不全?
去 www.kernel.org 下载对应版本的内核源代码。
|
缺少头文件和许可证
#include // init和exit相关宏
MODULE_LICENSE("GPL");
make 文件
make -c /usr/src/linux-source-2.6.24 M=$(pwd) modules
#include // init和exit相关宏
MODULE_LICENSE("GPL");
make 文件
make -c /usr/src/linux-source-2.6.24 M=$(pwd) modules
|
驱动头文件是在Makefile要指定 KERNELDIR=这个变量赋值为你的内核源码树