当前位置:  技术问答>linux和unix

求助,编译最简单的“init/cleanup驱动程序”出错

    来源: 互联网  发布时间:2016-05-13

    本文导语:  我在debian etch上编译一个驱动程序报错,是很简单的一个init/cleanup程序,哪位大哥帮忙看一下吧,先谢谢了。。 源程序(程序应该没有问题,就是《linux程序设计》第三版第十八章的第一个例子程序): #include  #i...

我在debian etch上编译一个驱动程序报错,是很简单的一个init/cleanup程序,哪位大哥帮忙看一下吧,先谢谢了。。


源程序(程序应该没有问题,就是《linux程序设计》第三版第十八章的第一个例子程序):

#include 

#if defined(CONFIG_SMP)
#define __SMP__
#endif

#if defined(CONFIG_MODVERSIONS)
#define MODVERSIONS
#include 
#endif

#include 

int init_module(void)
{
printk(KERN_DEBUG "Hello, kernel!n");
return 0;
}

void cleanup_module(void)
{
printk(KERN_DEBUG "Good-bye, kernel!n");
}


编译时的命令(也是书上写的编译方法):

gcc -D__KERNEL__ -I/usr/src/linux-headers-2.6.18-4-686/include -DMODULE -Wall -O2 -c hello.c -o hello.o


下面是gcc报的错误:

In file included from /usr/src/linux-headers-2.6.18-4-686/include/asm/thread_info.h:16,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/thread_info.h:21,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/preempt.h:9,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/spinlock.h:49,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/capability.h:45,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/sched.h:44,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/module.h:9,
                 from hello.c:4:
/usr/src/linux-headers-2.6.18-4-686/include/asm/processor.h:80: error: ‘CONFIG_X86_L1_CACHE_SHIFT’ undeclared here (not in a function)
/usr/src/linux-headers-2.6.18-4-686/include/asm/processor.h:80: error: requested alignment is not a constant
In file included from /usr/src/linux-headers-2.6.18-4-686/include/linux/rwsem.h:24,
                 from /usr/src/linux-headers-2.6.18-4-686/include/asm/semaphore.h:42,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/sched.h:57,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/module.h:9,
                 from hello.c:4:
/usr/src/linux-headers-2.6.18-4-686/include/asm/rwsem.h: In function ‘__down_read’:
/usr/src/linux-headers-2.6.18-4-686/include/asm/rwsem.h:104: error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
/usr/src/linux-headers-2.6.18-4-686/include/asm/rwsem.h: In function ‘__down_write_nested’:
/usr/src/linux-headers-2.6.18-4-686/include/asm/rwsem.h:156: error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
/usr/src/linux-headers-2.6.18-4-686/include/asm/rwsem.h: In function ‘__up_read’:
/usr/src/linux-headers-2.6.18-4-686/include/asm/rwsem.h:198: error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
/usr/src/linux-headers-2.6.18-4-686/include/asm/rwsem.h:192: warning: unused variable ‘tmp’
/usr/src/linux-headers-2.6.18-4-686/include/asm/rwsem.h: In function ‘__up_write’:
/usr/src/linux-headers-2.6.18-4-686/include/asm/rwsem.h:224: error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
/usr/src/linux-headers-2.6.18-4-686/include/asm/rwsem.h: In function ‘__downgrade_write’:
/usr/src/linux-headers-2.6.18-4-686/include/asm/rwsem.h:249: error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
In file included from /usr/src/linux-headers-2.6.18-4-686/include/linux/sched.h:57,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/module.h:9,
                 from hello.c:4:
/usr/src/linux-headers-2.6.18-4-686/include/asm/semaphore.h: In function ‘down’:
/usr/src/linux-headers-2.6.18-4-686/include/asm/semaphore.h:105: error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
/usr/src/linux-headers-2.6.18-4-686/include/asm/semaphore.h: In function ‘down_interruptible’:
/usr/src/linux-headers-2.6.18-4-686/include/asm/semaphore.h:130: error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
/usr/src/linux-headers-2.6.18-4-686/include/asm/semaphore.h: In function ‘down_trylock’:
/usr/src/linux-headers-2.6.18-4-686/include/asm/semaphore.h:155: error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
/usr/src/linux-headers-2.6.18-4-686/include/asm/semaphore.h: In function ‘up’:
/usr/src/linux-headers-2.6.18-4-686/include/asm/semaphore.h:179: error: expected ‘:’ or ‘)’ before ‘KBUILD_BASENAME’
In file included from /usr/src/linux-headers-2.6.18-4-686/include/asm/smp.h:17,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/smp.h:18,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/sched.h:63,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/module.h:9,
                 from hello.c:4:
/usr/src/linux-headers-2.6.18-4-686/include/asm/mpspec.h:6:25: error: mach_mpspec.h: No such file or directory
In file included from /usr/src/linux-headers-2.6.18-4-686/include/asm/smp.h:17,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/smp.h:18,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/sched.h:63,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/module.h:9,
                 from hello.c:4:
/usr/src/linux-headers-2.6.18-4-686/include/asm/mpspec.h: At top level:
/usr/src/linux-headers-2.6.18-4-686/include/asm/mpspec.h:8: error: ‘MAX_MP_BUSSES’ undeclared here (not in a function)
/usr/src/linux-headers-2.6.18-4-686/include/asm/mpspec.h:22: error: ‘MAX_IRQ_SOURCES’ undeclared here (not in a function)
In file included from /usr/src/linux-headers-2.6.18-4-686/include/linux/smp.h:18,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/sched.h:63,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/module.h:9,
                 from hello.c:4:
/usr/src/linux-headers-2.6.18-4-686/include/asm/smp.h:76:26: error: mach_apicdef.h: No such file or directory
In file included from /usr/src/linux-headers-2.6.18-4-686/include/linux/smp.h:18,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/sched.h:63,
                 from /usr/src/linux-headers-2.6.18-4-686/include/linux/module.h:9,
                 from hello.c:4:
/usr/src/linux-headers-2.6.18-4-686/include/asm/smp.h: In function ‘hard_smp_processor_id’:
/usr/src/linux-headers-2.6.18-4-686/include/asm/smp.h:80: warning: implicit declaration of function ‘GET_APIC_ID’
In file included from /usr/src/linux-headers-2.6.18-4-686/include/linux/module.h:9,
                 from hello.c:4:
/usr/src/linux-headers-2.6.18-4-686/include/linux/sched.h: In function ‘dequeue_signal_lock’:
/usr/src/linux-headers-2.6.18-4-686/include/linux/sched.h:1209: warning: implicit declaration of function ‘local_irq_save’
/usr/src/linux-headers-2.6.18-4-686/include/linux/sched.h:1211: warning: implicit declaration of function ‘local_irq_restore’
hello.c:12:31: error: linux/modversions.h: No such file or directory


linux-headers-2.6.18-4-686、linux-source-2.6.18包我都装了。另外,我google了一下,据说光安装这些包还不行,还要config?但是具体要怎么做呢?我目前是在自学《linux程序设计》第三版,现在看到第18章设备驱动程序,这个是这章上的第一个例子,目前我暂时还没时间去研究内核的东西,只是想先把这本书看完,先有个基本的概念。。。

|

第一, 你的 这段代码不太对,
第二, 你的 Makefile 不对。
具体原因去 http://blog.csdn.net/pottichu/archive/2007/11/19/1892245.aspx 看看。

|
module_init(init_module);
module_exit(cleanup_module);

我的建议是如果打算看看驱动,就去看LDD 3
linux device driver 3rd

    
 
 

您可能感兴趣的文章:

  • 高分求助foxpro的jdbc驱动程序!!!!
  • 【求助】:如何用ioctl()函数调用一个驱动程序
  • 新手求助:BSP与驱动程序的差别
  • 求助!驱动如何触发程序?
  • 求助:如何通过驱动程序来操作设备?
  • 【求助】基于2.6.29内核编译的驱动程序能否应用于2.6.32内核的系统?
  • [高分求助]小弟在编第一个驱动程序时出现了若干辣手问题,请高手指教!
  • 读<<linux设备驱动程序〉〉,求助!!!
  • rh8编译内核出错!求助!
  • 系统FC10 我想装tar.gz的源码文件。但在编译是总是出错。求助
  • 求助 有人能给个编译好的,可直接运行的 发包测试软件吗
  • redhat9.0编译的新核心不能启动,求助!
  • ubuntu 10.10环境下的交叉编译求助
  • 求助:关于gcc的预编译头
  • 新手求助!编译libmad包时的错误!
  • 求助:编译的头文件问题
  • gcc编译时出错,gcc: installation problem, cannot exec `as': 没有那个文件或目录!!!求助呀呀!!!!!
  • 求助,编译出错!
  • 如何编译包中的java文件?【求助】
  • 编译内核时出现的一个问题,求助!
  • 求助 程序中添加互斥锁代码后编译怎么通不过 ?
  • 求助-FBreader编译
  • 求助一个编译中的/usr/bin/ld错误
  • 编译问题:求助
  • 等待高手,百分求助:patchadd时出错(for solaris9)[在线等] iis7站长之家
  • 求助,为什么在windows下g++编译出来的文件都很大?
  • 新手求助:如何编译...
  • 求助:程序能编译但不能链接,重新安装了GCC也是那样的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求助make menuconfig出错了
  • 系统FC10 我想装tar.gz的源码文件。但在编译是总是出错。求助
  • debian编译过程出错求助,很急
  • red hat怎么安装gcc啊!总是出错,求助求助啊!!!yum源怎么改啊!!
  • 求助:Redlag6.0下安装ReSIProcate出错
  • 求助:内核编译出错,系统不能启动!!
  • 求助!!编译连接 mysql 时出错
  • 求助gcc编译头文件出错的问题,急!!!!!!
  • 求助!编译内核出错
  • 求助,VMware4.0出错!
  • [求助]indep_printk(char *fmt,...)重新封装了一下printk,可怎么出错呢?
  • 求助,linux中安装tree时出错
  • (紧急求助)后台运行程序出错
  • 等待高手,百分求助:patchadd时出错(for solaris9)[在线等]
  • 在线紧急求助:swap分区总是出错,不管他分在哪里
  • 求助linux下编译proc程序出错
  • linux file system 出错。。。江湖救急~~~ 高分求助!!!
  • 菜鸟求助:数值比较-eq。书上说的是:假值是零,真值为1,可写的脚本却出错了。
  • 【在线等求助】spinlock模拟出错
  • 求助:Debian v3.0 启动、关机时,出错。
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 怎样读取HZK24S前十区的内容啊???求助求助
  • 紧急求助!紧急求助!
  • 【求助】iplanet问题,求助高手解答!
  • 菜鸟求助,solaris下计算问题求助
  • 【求助】SOS紧急求助..............极为简单的问题...跪求....
  • 高分求助啊!求助SUSE 10.0 不能上网.
  • 急急急急急急急啊,紧急求助啊!!!!!满分求助啊!!!!!!
  • 求助:linux下 vim的配置(高分求助)
  • 求助~~求助 ~~linux文件读写问题
  • 求助:信号 --13 进程中断


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3