我目前正在尝试编译一个简单的内核模块(只是打印HelloWorld)。但每当我尝试编译它时,我都会收到错误:"
scripts/Makefile.modpost:91: recipe for target '__modpost' failed"
我的makefile如下所示:
obj-m +=mod_init.o
mod_init-y += Tests/breakpoint.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules -w
@echo "Modules build"
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
"干净"完美无瑕。但是" make"总是以这个错误结束。
我的系统在ARM上运行,带有自编译内核(来自Kernel.org的Linux 4.11.4)我使用第二台pc通过以下命令交叉编译它:
PC2:
export ARCH=arm
export CROSS_COMPILE=arm-none-eabi-
make mrproper
make exynos_defconfig (exynos is my cpu on ARM + make menuconfig for my needs)
make zImage (needed for my board)
make modules
复制之后zImage(根据uname -a启动) 并将源文件夹复制到ARM板上的/ usr / src /)。我执行了这个:
ARM Board:
make modules_install
make check_headers
make headers_install
在此之后我尝试执行我的makefile,它不会在没有错误的情况下结束。 使用"执行它使V = 1"打印这个(除了上面提到的错误):
make [1]:输入目录' /usr/src/linux-4.11.4' test -e include / generated / autoconf.h -a -e include / config / auto.conf || (\ echo>& 2;
echo>& 2"错误:内核配置无效。&#34 ;; \
echo>& 2"缺少include / generated / autoconf.h或include / config / auto.conf。&#34 ;; \
echo>& 2"运行' make oldconfig&&做好准备'在内核src上修复它。&#34 ;; \
echo>& 2; \ / bin中/假)
但这些文件位于/usr/src/linux-4.11.4/include /...
正在搜索此问题我找到了这个(goo.gl/IZHp4j),但重写makefile不会改变任何内容
有人知道如何解决这个问题吗?我发现的唯一的东西是没有安装的头文件(除了我复制的内核源代码,/ usr / src中没有任何内容)或者makefile中没有允许的标志
提前谢谢