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

简单的模块编译通不过……

    来源: 互联网  发布时间:2016-09-01

    本文导语:  #include  #if defined(CONFIG_SMP) #define __SMP__ #endif #if defined(CONFIG_MODVERSIONS) #define MODVERSIONS #include  #endif #include  static __init int init_modules(void) {     printk(KERN_DEBUG "Hello, kernel!n");     return 0; } static __exit void cleanup_modules...


#include 

#if defined(CONFIG_SMP)
#define __SMP__
#endif

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

#include 

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

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



操作系统:debian 5.04/gcc-4.3
命令:gcc -D__KERNEL__ -I/usr/src/linnux-headers-$(uname -r)/include -DMODULE -Wall -O2 -c kernel.c -o kernel.o

错误提示:

double@DES:~$ gcc -D__KERNEL__ -I/usr/src/linux-headers-$(uname -r)/include -DMODULE -Wall -O2 -c kernel.c -o kernel.o
In file included from /usr/src/linux-headers-2.6.26-2-686/include/linux/cache.h:4,
  from /usr/src/linux-headers-2.6.26-2-686/include/asm/pda.h:7,
  from /usr/src/linux-headers-2.6.26-2-686/include/asm/current_64.h:7,
  from /usr/src/linux-headers-2.6.26-2-686/include/asm/current.h:4,
  from /usr/src/linux-headers-2.6.26-2-686/include/asm/processor.h:15,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/prefetch.h:14,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/list.h:6,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/module.h:9,
  from kernel.c:1:
/usr/src/linux-headers-2.6.26-2-686/include/linux/kernel.h: In function ‘printk_needs_cpu’:
/usr/src/linux-headers-2.6.26-2-686/include/linux/kernel.h:220: error: parameter name omitted
In file included from /usr/src/linux-headers-2.6.26-2-686/include/linux/prefetch.h:14,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/list.h:6,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/module.h:9,
  from kernel.c:1:
/usr/src/linux-headers-2.6.26-2-686/include/asm/processor.h: At top level:
/usr/src/linux-headers-2.6.26-2-686/include/asm/processor.h:112: error: ‘CONFIG_X86_L1_CACHE_SHIFT’ undeclared here (not in a function)
/usr/src/linux-headers-2.6.26-2-686/include/asm/processor.h:112: error: requested alignment is not a constant
In file included from /usr/src/linux-headers-2.6.26-2-686/include/linux/prefetch.h:14,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/list.h:6,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/module.h:9,
  from kernel.c:1:
/usr/src/linux-headers-2.6.26-2-686/include/asm/processor.h:155:1: warning: "cache_line_size" redefined
In file included from /usr/src/linux-headers-2.6.26-2-686/include/asm/pda.h:7,
  from /usr/src/linux-headers-2.6.26-2-686/include/asm/current_64.h:7,
  from /usr/src/linux-headers-2.6.26-2-686/include/asm/current.h:4,
  from /usr/src/linux-headers-2.6.26-2-686/include/asm/processor.h:15,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/prefetch.h:14,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/list.h:6,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/module.h:9,
  from kernel.c:1:
/usr/src/linux-headers-2.6.26-2-686/include/linux/cache.h:64:1: warning: this is the location of the previous definition
/usr/src/linux-headers-2.6.26-2-686/include/asm/processor.h: In function ‘load_cr3’:
/usr/src/linux-headers-2.6.26-2-686/include/asm/processor.h:187: error: ‘CONFIG_PAGE_OFFSETUL’ undeclared (first use in this function)
/usr/src/linux-headers-2.6.26-2-686/include/asm/processor.h:187: error: (Each undeclared identifier is reported only once
/usr/src/linux-headers-2.6.26-2-686/include/asm/processor.h:187: error: for each function it appears in.)
/usr/src/linux-headers-2.6.26-2-686/include/asm/processor.h: At top level:
/usr/src/linux-headers-2.6.26-2-686/include/asm/processor.h:236: error: requested alignment is not a constant
In file included from /usr/src/linux-headers-2.6.26-2-686/include/asm/thread_info.h:5,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/thread_info.h:47,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/preempt.h:9,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/spinlock.h:49,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/seqlock.h:29,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/time.h:8,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/stat.h:60,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/module.h:10,
  from kernel.c:1:
/usr/src/linux-headers-2.6.26-2-686/include/asm/thread_info_64.h: In function ‘current_thread_info’:
/usr/src/linux-headers-2.6.26-2-686/include/asm/thread_info_64.h:66: error: ‘THREAD_SIZE’ undeclared (first use in this function)
/usr/src/linux-headers-2.6.26-2-686/include/asm/thread_info_64.h: In function ‘stack_thread_info’:
/usr/src/linux-headers-2.6.26-2-686/include/asm/thread_info_64.h:74: error: ‘THREAD_SIZE’ undeclared (first use in this function)
In file included from /usr/src/linux-headers-2.6.26-2-686/include/linux/elf.h:7,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/module.h:14,
  from kernel.c:1:
/usr/src/linux-headers-2.6.26-2-686/include/asm/elf.h: In function ‘elf_common_init’:
/usr/src/linux-headers-2.6.26-2-686/include/asm/elf.h:166: error: ‘struct pt_regs’ has no member named ‘r8’
/usr/src/linux-headers-2.6.26-2-686/include/asm/elf.h:166: error: ‘struct pt_regs’ has no member named ‘r9’
/usr/src/linux-headers-2.6.26-2-686/include/asm/elf.h:166: error: ‘struct pt_regs’ has no member named ‘r10’
/usr/src/linux-headers-2.6.26-2-686/include/asm/elf.h:166: error: ‘struct pt_regs’ has no member named ‘r11’
/usr/src/linux-headers-2.6.26-2-686/include/asm/elf.h:167: error: ‘struct pt_regs’ has no member named ‘r12’
/usr/src/linux-headers-2.6.26-2-686/include/asm/elf.h:167: error: ‘struct pt_regs’ has no member named ‘r13’
/usr/src/linux-headers-2.6.26-2-686/include/asm/elf.h:167: error: ‘struct pt_regs’ has no member named ‘r14’
/usr/src/linux-headers-2.6.26-2-686/include/asm/elf.h:167: error: ‘struct pt_regs’ has no member named ‘r15’
In file included from /usr/src/linux-headers-2.6.26-2-686/include/linux/mmzone.h:16,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/gfp.h:4,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/slab.h:12,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/percpu.h:5,
  from /usr/src/linux-headers-2.6.26-2-686/include/asm/local.h:4,
  from /usr/src/linux-headers-2.6.26-2-686/include/linux/module.h:19,
  from kernel.c:1:
/usr/src/linux-headers-2.6.26-2-686/include/linux/nodemask.h: In function ‘__first_node’:
/usr/src/linux-headers-2.6.26-2-686/include/linux/nodemask.h:233: warning: implicit declaration of function ‘find_first_bit’
/usr/src/linux-headers-2.6.26-2-686/include/linux/nodemask.h: In function ‘__next_node’:
/usr/src/linux-headers-2.6.26-2-686/include/linux/nodemask.h:239: warning: implicit declaration of function ‘find_next_bit’
/usr/src/linux-headers-2.6.26-2-686/include/linux/nodemask.h: In function ‘__first_unset_node’:
/usr/src/linux-headers-2.6.26-2-686/include/linux/nodemask.h:257: warning: implicit declaration of function ‘find_first_zero_bit’
In file included from /usr/src/linux-headers-2.6.26-2-686/include/linux/module.h:21,
  from kernel.c:1:
/usr/src/linux-headers-2.6.26-2-686/include/asm/module.h:70:2: error: #error unknown processor family

|
不懂,帮顶,顺便问下,这是内核吗??抱歉,我只是好奇!

|
这种模块编译需要有kbuild支持吧才可以生成对应的模块吧。

我参考一个模块编译Makefile文件生成下面的Makefile, 然后再编译是可以生成模块的。

KERNEL_VERSION := `uname -r`
KERNEL_DIR := /lib/modules/$(KERNEL_VERSION)/build

PWD := $(shell pwd)

obj-m := simplemodule.o

all: simplemodule

simplemodule:
@echo "Building simple module driver..."
@(cd $(KERNEL_DIR) && make -C $(KERNEL_DIR) SUBDIRS=$(PWD) modules)

clean:
-rm -f *.o *.ko .*.cmd .*.flags *.mod.c Modules.symvers
-rm -rf .tmp_versions


我的系统是Ubuntu,内核为:2.6.31-20-generic


    
 
 

您可能感兴趣的文章:

  • *******是不是对内核模块编程然后再重新编译内核就可以把此模块整合到linux系统中
  • 驱动模块可以编入内核,想单独编译成模块,makefile怎么写?
  • 关于如何把编译进内核的编译成模块
  • 想问一下,编译LINUX内核时,是否可以只编译其中的一个模块?
  • [求教]内核加载模块后,这部分内容编译在内核里的吗?
  • 驱动模块编译调试问题、、????
  • 编译出来的内核模块怎么那么大
  • 如何查看编译进内核的模块
  • 编译模块的时候出现的问题
  • rndis驱动编译成内核模块
  • 将驱动模块编译进内核是否有用??
  • 如何编译内核源代码中的某一模块?
  • 编译模块的小问题
  • 为什么我编译的内核模块由300M这么大
  • 为什么apache编译后 ,没有rewrite模块?
  • apache模块静态编译问题
  • 模块编译问题!!!!!!!1
  • 模块编译问题?
  • BUS LOGIC是什么模块?编译内核在那里选?
  • 编译内核模块的问题....(急)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Python异常模块traceback用法举例
  • Linux中一个模块中的函数如何被另一个模块调用?
  • Python的MySQLdb模块安装
  • insmod模块无显示,但rmmod模块有显示
  • 传感器模块、gprs模块如何和我的2440开发板相连
  • 大侠帮忙!模块调试(非内核模块)
  • 想删除内核中的一个模块,输入命令后,系统提示该模块不存在。但是我lsmod时,它在/proc/modules中。求解。
  • 同机装有Windows和Linux两套系统(先装Win后装Linux),如何使计算机使用Windows的启动模块而不是Linux的启动模块?
  • 自己写的内核模块与用户模块通信(交互)
  • 如何停止模块运行
  • 弱弱的问一个关于"模块化编程"的问题
  • 模块的安装求助
  • 模块依赖小问题,请各位大大帮忙
  • 关于rsync同步模块配置问题
  • 自定义内核模块禁止启动图形界面
  • 使用非root用户加载模块出错
  • 如何想向内核添家一个自定义的模块?
  • 关于LINUX内核模块的按需卸载及安装
  • 驱动模块断电重加载问题
  • linux内核模块间调用函数
  • 内核模块和设备驱动的区别?


  • 站内导航:


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

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

    浙ICP备11055608号-3