MD5Ryan 发表于 2013-06-27 23:23

开发驱动的环境真心让人感到沮丧!!!

我已经卡在这里3天了, 网上的攻略也不知道看了多少了,完全没有一点帮助 遇到的还是那些问题...

希望有熟悉这个过程的大大来讲解一下...

我用的是ubuntu 10.04它自带的内核是2.6.32-38-generic

但是因为它没自带源代码, 所以我在kernel.org下载了 2.6.32.1的源代码

我解压到了/usr/src

然后make oldconfig

接着有攻略说可以make也可以不make我都试过了都是一样的问题

然后就是make bzImage   ... make modules   ... make modules_install

有的说这样就可以了还有的说需要make install 在/boot下面生成一下内核文件当然还需要makeinitrd来生成initrd.img

这两种情况我也试过

我不知道是我的makefile写的有问题还是构建内核树的问题

我看书上写的最简单的那个hello.c   说可以写一个最简单的makefile

obj-m:=hello.o

这个就可以了,但是我make的时候就(已经把原来的makefile改名)会提醒 no target...

然后我又写复杂的:
obj-m:=hello.o
KDIR:=/lib/modules/2.6.32.1/build
SRCPWD:=$(shell pwd)
all:
    $(MAKE) -C $(KDIR) M=$(SRCPWD) modules
clean:
    rm -rf hello.o

这里make也会出问题
但是改$(MAKE) -C $(KDIR) M=$(SRCPWD) modules为   
$(MAKE) -C $(KDIR) M=$(SRCPWD)/modules 就不会有错误
但是会一直提示进入/lib/modules/2.6.32.1/build 然后make
无限循环一样
之后又会提示waiting for unfinished jobs....
wait:no child processes...

我已经被这些问题纠缠了3天了...实在找不到办法了
所以想在这里求大大指点一下迷津
先谢过了

MD5Ryan 发表于 2013-06-28 09:18

还是没人回答啊...

obj-m:=hello.o
KDIR:=/lib/modules/2.6.32.1/build
SRCPWD:=$(shell pwd)
all:
    $(MAKE) -C $(KDIR) M=$(SRCPWD) modules
clean:
    rm -rf hello.o

按道理这个是对的但是出现的问题是 no rule to make target 'module' stop.

wwxxxxll 发表于 2013-06-28 09:34

本帖最后由 wwxxxxll 于 2013-06-28 09:34 编辑

no rule to make target 'module' stop
你要看看/lib/modules/2.6.32.1/build下是否有内核文件。

还有一个地方有
/usr/src/kernels/2.6.18-164.el5-i686/下也有,可以试试,当然我用的是redhat。

还有你上面说了下载了内核源码,那要写的目录是你的源码的目录(你可能是这个问题),我写的:
obj-m := hello.o

LINUXROOT:=/home/wxl/s3c2440/osdrv/kernel/linux-3.2.36/
PWD:=$(shell pwd)

default:
      @make -C $(LINUXROOT) M=$(PWD) modules
clean:
      @make -C $(LINUXROOT) M=$(PWD) clean

/home/wxl/s3c2440/osdrv/kernel/linux-3.2.36/是我源码的目录。


MD5Ryan 发表于 2013-06-28 10:56

回复 3# wwxxxxll

ni hao , zhe shi wo de mulu

root@RYAN:/lib/modules/2.6.32.1/build# ls
arch         drivers   ipc          Makefile.bak    REPORTING-BUGStools
block          firmwareKbuild       mm            samples         usr
COPYING      fs      kernel       modules.order   scripts         virt
CREDITS      hello.c   lib          Module.symverssecurity      vmlinux
crypto         include   MAINTAINERSnet             sound         vmlinux.o
Documentationinit      Makefile   README          System.map
root@RYAN:/lib/modules/2.6.32.1/build#

wwxxxxll 发表于 2013-06-28 11:19

和我的没区别。
那你试试/usr/src/kernels/2.6.18-164.el5-i686/
和你的源码目录

wwxxxxll 发表于 2013-06-28 11:20

qq:2379374402

MD5Ryan 发表于 2013-06-29 09:08

回复 5# wwxxxxll

谢谢大大的回复, 我后面发现用系统自带的内核树就可以编译了...

问题是我不明白为什么自己建的就不行

估计还是对
make oldconfig    make   make bzImage    make modules   make modules_install   
这里东西的内在理解不透彻..

不管怎么样都很感谢大大
            


   
页: [1]
查看完整版本: 开发驱动的环境真心让人感到沮丧!!!