交叉编译外部linux模块:找不到M =`pwd`directory

时间:2013-09-01 19:08:57

标签: linux cross-compiling kernel-module

我正在使用CentOS针对完整的内核树编译外部模块。我已经在Beaglebone上成功修改,交叉编译,构建和启动了这个内核。我正在使用linaro工具(arm-gnueabihf-)。我使用相同的典型Makefile结构来编译自从2.6发布以来我曾经使用过的模块。运行make规则时:

make ARCH=arm CROSS_COMPILE=${CC} -C $(KDIR) M=`pwd` modules

其中CCKDIR已正确设置为我的工具链和我的内核src树,kbuild正确地将dir更改为-C(内核src)目录,但是当回来时(即处理M)我收到以下错误:

scripts/Makefile.build:44: /home/foo/bar/
Makefile: No such file or directory

其中/home/foo/bar实际上是我当前的工作目录,即pwd

的正确结果

直接在M=中编写我的pwd路径或使用make var而不是调用pwd会产生相同的结果(不是语法问题)

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

试试这个,因为我不知道你的make文件是怎么回事。

创建Makefile in /home/foo/bar

obj-m += hello.o
KERNELDIR=/home/vinay.hunachyal/build/clfs/sources/linux-3.9
all:
    make -C  $(KERNELDIR) M=$(PWD) modules

clean: 
    make -C $(KERNELDIR)  M=$(PWD) clean

在上面的Makefile中编辑KERNELDIR =(path-to-kernel-source) 也改变obj-m + =(你的模块)

之后只需使用

构建模块

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-