Linux LKM编译-modpost语法错误
我目前正在尝试编译一个简单的内核模块(只打印HelloWorld)。但每次我试图编译它时,都会出现错误: 我的makefile如下所示:Linux LKM编译-modpost语法错误,linux,linux-kernel,syntax-error,Linux,Linux Kernel,Syntax Error,我目前正在尝试编译一个简单的内核模块(只打印HelloWorld)。但每次我试图编译它时,都会出现错误: 我的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
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
“保持清洁”工作完美无瑕,但“制造”总是以这个错误结束
我的系统在ARM上运行,有一个自编译内核(kernel.org中的Linux 4.11.4),我使用第二台pc和以下命令交叉编译它:
PC2:
复制后的zImage(根据uname-a引导)
并将源文件夹复制到ARM板上的/usr/src/)。在那里,我执行了以下操作:
臂板:
make modules_install
make check_headers
make headers_install
在这之后,我尝试执行我的makefile,它不会在没有错误的情况下结束。
使用“make V=1”执行该命令会打印此信息(除上述错误外):
make[1]:输入目录“/usr/src/linux-4.11.4”
test-e include/generated/autoconf.h-a-e include/config/auto.conf |(\
回声>&2
echo>&2“错误:内核配置无效。”\
echo>&2“缺少include/generated/autoconf.h或include/config/auto.conf。”\
echo>&2“在内核src上运行'makeoldconfig&&makeprepare'来修复它。”\
回声>&2\
/银行标识代码(bin/false)
但是这些文件位于/usr/src/linux-4.11.4/include/
搜索这个问题时,我发现了这个(goo.gl/IZHp4j),但是重写makefile不会改变任何东西
有人知道如何解决这个问题吗?我发现的唯一问题是没有安装头(除了我复制的内核源代码,/usr/src中没有任何内容)或者makefile中不允许使用符号
提前谢谢你你能检查一下
/lib/modules/$(shell uname-r)/build
板上是否指向/usr/src
?你也需要在arm板上导出ARCH=arm
,以及做一些解图
。谢谢你的回答。@vtha:构建并源代码都指向/usr/src/\LinuxVersion”build->/usr/src/linux-4.11.4“source->/usr/src/linux-4.11.4”@0andriy:我稍后会用一个新的编译版本来测试这个问题。只是用当前的(已经安装的版本)尝试了一下,但是除了安装/检查一个模块之外,这不会做任何事情。我为什么要做“make xxx\u config”呢"? 因为配置文件只是与文件夹中的所有内容一起复制的?(不得不将我的答案分成两部分,因为我只能@1个用户…)
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
make modules_install
make check_headers
make headers_install