新手,问基础问题。
本帖最后由 cjjnjust 于 2010-09-13 14:23 编辑最近学习LINUX驱动程序开发,我看的是《精通Linux 驱动程序开发》有下面几个问题哈:
1.驱动编写后放到内核中,如何编译,链接,调试?
好像是要设置成模块,再编译。然后取出.KO文件,放到某个地方?再insmod。
但是具体怎么操作不懂。望好心人出来教下。谢谢拉
十楼的同志,希望快速回复是每个上网发贴者的心情,那并不代表我不看书,浮躁。
象我这样的初学者很多。要是能够回答,不就让更多的初学者受益。
看看这个帖子,居然能够排在第一个这么久。我不信大家驱动开发的过程中都没遇到问题。这是一个氛围问题。
难道你不是从初学者过来,或者你初学的时候看书都没遇到问题。
我是希望牛人们能给点入门的捷径。毕竟万事开头难。还有Linux社区不是本来就是应该有更多这种的讨论的,或者请教的吗? read <linux device drivers> 3rd edition. 拜托,你就当做你复习一遍拉。
我看了LDD3拉,问题是里面描述的很乱。。。
比如23页的那段代码。为什么Entering directory `/usr/src/linux-2.6.10`后就会
CC /home/ldd3/src/misc-modules/hello.o
希望给点经验阿。。。 这个问题很基础 建议google
或者查看一些linux驱动开发书籍 虽然说简单,但希望能给点提示,这样效率会高点,不是没看书。毕竟说的不是很清楚。
花一分钟的时候解决的问题,要看一堆东西。觉的不值得。如果国内的人,都这么学习Linux,估计一百年都不会有系统出现,大家都在找资料,学习、查资料。当学会windows的时候,学Linux,如果有一天 量子计算机出来了。所有的东西都更新换代了。是不是我们又得重头开始学习。
难道我们就不能站在巨人的肩膀上?
ifneq ($(KERNELRELEASE),)
obj-m := module.o
module-objs := file1.o file2.o
else
PWD := $(shell pwd)
KVER ?= $(shell uname -r)
KDIR := /lib/modules/$(KVER)/build
modules:
$(MAKE) -C $(KDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KDIR) M=$(PWD) modules_insall
clean:
rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions
endif
这样的速度 ,怪不得国人只会生产汉芯。 晕翻,驱动的编译有两种方式,一种是静态编译进内核,一种是编译成模块
静态编译进内核的话,找到合适的目录,将驱动源码放到下面,修改Makefile和Kconfig文件,然后编译整个内核
模块就是你说的编译成.ko,然后insmod啦 quote:
1.驱动编写后放到内核中,如何编译,链接,调试?
好像是要设置成模块,再编译。然后取出.KO文件,放到某个地方?再insmod。
但是具体怎么操作不懂。望好心人出来教下。谢谢拉
我来试着回答一下:
编写驱动有它的模式,驱动运行在 kernel space, 首先你得在自己的 linux 系统上建立 kernel tree, 源码可以从 www.kernel.org上down.
驱动需要在编译好的内核源码的环境下进行编译,编成.ko文件,然后再 insmod, 至于调试,确保代码无误的情况下,需要自己写user space 的code 进行 test 驱动。 补充一下,具体怎么操作:
刚开始可能觉得不知道如何具体操作,那就多看源码吧,或者别人的驱动代码,或者简单的驱动框架。
从 module_init(...); 开始. 谢谢了。{:3_190:} 记得当初学C++的时候。有个论坛叫vckbase,当时那个回复的速度阿,只能用两个字形容。神速。
就算CSDN也还可以。
不知道Linux这边,有什么神论坛? 本帖最后由 lelee007 于 2010-09-11 12:31 编辑
chinaunix应该是中文论坛里边算NB的了
LZ觉得不爽去逛外文论坛呗
自己不下功夫好好看书,光指着别人快速回复,这根本不是个认真的治学态度
页:
[1]
2