当前位置: 技术问答>linux和unix
hello world driver
来源: 互联网 发布时间:2016-06-13
本文导语: 看linux设备驱动第二章hello world模块 测试之,产生以下错误代码 xxx:/usr/local/moudle-driver# make make -C /usr/local/linux-2.6.22.14 M=/usr/local/moudle-driver modules make[1]: Entering directory `/usr/local/linux-2.6.22.14' ERROR: Kernel configura...
看linux设备驱动第二章hello world模块
测试之,产生以下错误代码
xxx:/usr/local/moudle-driver# make
make -C /usr/local/linux-2.6.22.14 M=/usr/local/moudle-driver modules
make[1]: Entering directory `/usr/local/linux-2.6.22.14'
ERROR: Kernel configuration is invalid.
include/linux/autoconf.h or include/config/auto.conf are missing.
Run 'make oldconfig && make prepare' on kernel src to fix it.
WARNING: Symbol version dump /usr/local/linux-2.6.22.14/Module.symvers
is missing; modules will have no dependencies and modversions.
CC [M] /usr/local/moudle-driver/hello.o
cc1: error: invalid option `regparm=3'
cc1: error: invalid option `preferred-stack-boundary=2'
cc1: error: invalid option `accumulate-outgoing-args'
cc1: error: unrecognized command line option "-Wno-pointer-sign"
cc1: error: unrecognized command line option "-fno-stack-protector"
make[2]: *** [/usr/local/moudle-driver/hello.o] Error 1
make[1]: *** [_module_/usr/local/moudle-driver] Error 2
make[1]: Leaving directory `/usr/local/linux-2.6.22.14'
make: *** [modules] Error 2
按照提示进入kernel src run make oldconfig
又错了,帖上一点错误信息
xxx:/usr/local/linux-2.6.22.14# make oldconfig
HOSTCC scripts/basic/fixdep
scripts/basic/fixdep.c:107:23: error: sys/types.h: No such file or directory
scripts/basic/fixdep.c:108:22: error: sys/stat.h: No such file or directory
scripts/basic/fixdep.c:109:22: error: sys/mman.h: No such file or directory
scripts/basic/fixdep.c:110:20: error: unistd.h: No such file or directory
scripts/basic/fixdep.c:111:19: error: fcntl.h: No such file or directory
scripts/basic/fixdep.c:112:20: error: string.h: No such file or directory
scripts/basic/fixdep.c:113:20: error: stdlib.h: No such file or directory
scripts/basic/fixdep.c:114:19: error: stdio.h: No such file or directory
请问我该怎么配置kernel, 系统缺少那些东东?
测试之,产生以下错误代码
xxx:/usr/local/moudle-driver# make
make -C /usr/local/linux-2.6.22.14 M=/usr/local/moudle-driver modules
make[1]: Entering directory `/usr/local/linux-2.6.22.14'
ERROR: Kernel configuration is invalid.
include/linux/autoconf.h or include/config/auto.conf are missing.
Run 'make oldconfig && make prepare' on kernel src to fix it.
WARNING: Symbol version dump /usr/local/linux-2.6.22.14/Module.symvers
is missing; modules will have no dependencies and modversions.
CC [M] /usr/local/moudle-driver/hello.o
cc1: error: invalid option `regparm=3'
cc1: error: invalid option `preferred-stack-boundary=2'
cc1: error: invalid option `accumulate-outgoing-args'
cc1: error: unrecognized command line option "-Wno-pointer-sign"
cc1: error: unrecognized command line option "-fno-stack-protector"
make[2]: *** [/usr/local/moudle-driver/hello.o] Error 1
make[1]: *** [_module_/usr/local/moudle-driver] Error 2
make[1]: Leaving directory `/usr/local/linux-2.6.22.14'
make: *** [modules] Error 2
按照提示进入kernel src run make oldconfig
又错了,帖上一点错误信息
xxx:/usr/local/linux-2.6.22.14# make oldconfig
HOSTCC scripts/basic/fixdep
scripts/basic/fixdep.c:107:23: error: sys/types.h: No such file or directory
scripts/basic/fixdep.c:108:22: error: sys/stat.h: No such file or directory
scripts/basic/fixdep.c:109:22: error: sys/mman.h: No such file or directory
scripts/basic/fixdep.c:110:20: error: unistd.h: No such file or directory
scripts/basic/fixdep.c:111:19: error: fcntl.h: No such file or directory
scripts/basic/fixdep.c:112:20: error: string.h: No such file or directory
scripts/basic/fixdep.c:113:20: error: stdlib.h: No such file or directory
scripts/basic/fixdep.c:114:19: error: stdio.h: No such file or directory
请问我该怎么配置kernel, 系统缺少那些东东?
|
再编译下内核,
内核源码包必须与自己机子的内核版本一致。
不然不容易调试。
我每次Make config出问题之后都直接删除整个目录,
再解压源码包,重新make oldconfig或make menuconfig
内核源码包必须与自己机子的内核版本一致。
不然不容易调试。
我每次Make config出问题之后都直接删除整个目录,
再解压源码包,重新make oldconfig或make menuconfig
|
你的 kernel 目录很可能不正确,
建议你重新编译kernel。
Makefile 里,明确指出kernel 的路径。
建议你重新编译kernel。
Makefile 里,明确指出kernel 的路径。
|
scripts/basic/fixdep.c:107:23: error: sys/types.h: No such file or directory
scripts/basic/fixdep.c:108:22: error: sys/stat.h: No such file or directory
scripts/basic/fixdep.c:109:22: error: sys/mman.h: No such file or directory
scripts/basic/fixdep.c:110:20: error: unistd.h: No such file or directory
scripts/basic/fixdep.c:111:19: error: fcntl.h: No such file or directory
scripts/basic/fixdep.c:112:20: error: string.h: No such file or directory
scripts/basic/fixdep.c:113:20: error: stdlib.h: No such file or directory
scripts/basic/fixdep.c:114:19: error: stdio.h: No such file or directory
这些头文件都找不到,估计你的内核有问题,也有可能是你的内核没有编译过。
scripts/basic/fixdep.c:108:22: error: sys/stat.h: No such file or directory
scripts/basic/fixdep.c:109:22: error: sys/mman.h: No such file or directory
scripts/basic/fixdep.c:110:20: error: unistd.h: No such file or directory
scripts/basic/fixdep.c:111:19: error: fcntl.h: No such file or directory
scripts/basic/fixdep.c:112:20: error: string.h: No such file or directory
scripts/basic/fixdep.c:113:20: error: stdlib.h: No such file or directory
scripts/basic/fixdep.c:114:19: error: stdio.h: No such file or directory
这些头文件都找不到,估计你的内核有问题,也有可能是你的内核没有编译过。
|
试试:
# make defconfig
|
貌似你安装的 gnu 开发工具包有问题,或者没有安装
|
编译内核操作流程 ──为新手指南
http://fedora.linuxsir.org/main/?q=node/66
先编译你的内核。
|
应该就是内核没有编译过的问题
|
你的内核树没有编译,重新编译一个就OK了,或者重装LINUX,选择安装源代码。
|
当前运行的内核不是你编译模块的时候编译的内核?
建议安装kernel header file, 然后针对/lib/modules/`uname -r`/build 编译内核。
建议用ubuntu
建议安装kernel header file, 然后针对/lib/modules/`uname -r`/build 编译内核。
建议用ubuntu
|
你没有进入SU权限。有了这个权限就可以了,如果不想使用这个,就得自己在环境变量里加上地址,或者你直接操作这个命令的地址就可以了。呵呵,最初我也遇到过。
|
Makefile不对
给你个看看
============
obj-m += helloworld.o
KDIR:= /lib/modules/$(shell uname -r)/build
PWD:= $(shell pwd)
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean :
rm *.o *.ko *.symvers *.mod.c
===================
而且 你的lib库 可能安装有问题,自己查下
给你个看看
============
obj-m += helloworld.o
KDIR:= /lib/modules/$(shell uname -r)/build
PWD:= $(shell pwd)
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean :
rm *.o *.ko *.symvers *.mod.c
===================
而且 你的lib库 可能安装有问题,自己查下