当前位置: 技术问答>linux和unix
驱动编译问题
来源: 互联网 发布时间:2016-06-17
本文导语: 我用的linux主机是Ubuntu8.04 ,用uname-rs显示结果如下: Linux 2.6.24-19-generic 我的/usr/src目录下有: linux-2.6.24(文件夹)linux-headers-2.6.24-19(文件夹) linux-headers-2.6.24-19-generic(文件夹) 我把hello.c这个简单驱动模块...
我用的linux主机是Ubuntu8.04 ,用uname-rs显示结果如下:
Linux 2.6.24-19-generic
我的/usr/src目录下有:
linux-2.6.24(文件夹)linux-headers-2.6.24-19(文件夹) linux-headers-2.6.24-19-generic(文件夹)
我把hello.c这个简单驱动模块放在 ~/driverProgram/目录下,该目录下的makfile文件如下:
obj-m += hello.o
:然后用下面的命令编译:
make -C /usr/src/linux-2.6.24/ M=$(pwd) modules
结果输出的错误提示信息太多了,一屏幕拉上去都没看到顶!
这是哪里出问题了?
Linux 2.6.24-19-generic
我的/usr/src目录下有:
linux-2.6.24(文件夹)linux-headers-2.6.24-19(文件夹) linux-headers-2.6.24-19-generic(文件夹)
我把hello.c这个简单驱动模块放在 ~/driverProgram/目录下,该目录下的makfile文件如下:
obj-m += hello.o
:然后用下面的命令编译:
make -C /usr/src/linux-2.6.24/ M=$(pwd) modules
结果输出的错误提示信息太多了,一屏幕拉上去都没看到顶!
这是哪里出问题了?
|
内核源码树构建了吗?没有的话就会出一堆问题。需要先编译内核。
Makefile最好不要这样写,用这个模板吧:
[code=BatchFile]
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KERNELDIR ?= /usr/src/linux-2.6.24
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
[/code]
直接敲make就可以了
Makefile最好不要这样写,用这个模板吧:
[code=BatchFile]
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KERNELDIR ?= /usr/src/linux-2.6.24
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
[/code]
直接敲make就可以了
|
这个就是《linux设备驱动开发详解》上相同的了
还有你用的linux-2.6.24下面很有可能只有一些makefile文件,而没有源文件!
|
楼主问题解决了, 给点分吧.
嗯,写驱动makefile 应该uname -r 看看版本号,不然源文件包含错了.
嗯,写驱动makefile 应该uname -r 看看版本号,不然源文件包含错了.
|
你写的没错了,可能是源文件不够,或者hello.c本身就问题多多。
也许把问题贴出来更好办。
也许把问题贴出来更好办。
|
是这个问题吗?
|
学习
|
做个记号,楼主不要介意哦~~~