在 Beagle Bone Black 上构建树外模块

building a out-of-tree module on Beagle Bone Black

机器详细信息:

Linux beaglebone 3.8.13-bone47 armv7l GNU/Linux

问题详情:

为了尝试在 beagle bone black 上编写 out-of-tree 模块(因为 intree 模块要求我一次又一次地 compile/flash 它们),我已经通过 ssh 登录到 beagle bone black revc客户端,它通过 putty 为我提供命令行界面,就像在一般的树外模块开发中一样,我尝试使用以下 make 文件

编译模块
ifneq ($(KERNELRELEASE),)
# kbuild part of makefile
        obj-m  := module.o

        #module-objs := module.o
else
# normal makefile
        KDIR ?= /lib/modules/$(shell uname -r)/build
        PWD  := $(shell pwd)
default:
        $(MAKE) -C $(KDIR) M=$(PWD) modules

endif

导致错误

root@beaglebone:~/lddgeek# make
make -C /lib/modules/3.8.13-bone47/build M=/root/lddgeek modules
make: *** /lib/modules/3.8.13-bone47/build: No such file or directory.  Stop.
make: *** [default] Error 2

但是当我解析到 KDIR 的路径时,我没有找到构建文件夹,因为我们在 x86

上安装的正常 ubuntu 中找到了它

如果我必须在 Beagle 上开发 drivers/modules out-of-tree,我该怎么做?

我无法编译的原因是我缺少 kbuild 环境,我需要安装内核头文件,这将使我能够编译 out-of-tree/external 模块

#wget https://raw.github.com/gkaindl/beaglebone-ubuntu-scripts/master/bb-get-rcn-kernel-source.sh
#chmod +x bb-get-rcn-kernel-source.sh
#./bb-get-rcn-kernel-source.sh

以上步骤实际上帮助我解决了所面临的错误,同时我能够插入、删除我试图构建的 hello world 模块