内核模块编译失败(gcc:错误:elf_x86_64:没有此文件或目录)

内核模块编译失败(gcc:错误:elf_x86_64:没有此文件或目录)

make我正在尝试编译一个简单的内核模块,但是由于传递了错误的参数导致编译失败gcc

这是Makefile

obj-m += test.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) test

运行make产生以下错误:

$ make
make -C /lib/modules/3.16.0-33-generic/build M=/home/user/test test
make[1]: Entering directory `/usr/src/linux-headers-3.16.0-33-generic'
gcc   -m elf_x86_64  /home/user/test/test.c   -o test
gcc: error: elf_x86_64: No such file or directory
gcc: error: unrecognized command line option ‘-m’
make[1]: *** [test] Error 1
make[1]: Leaving directory `/usr/src/linux-headers-3.16.0-33-generic'
make: *** [all] Error 2

答案没有帮助:我已经搜索了所有包含使用且没有文件匹配的文件/usr-m elf_x86所以grep -rnw '/usr' -e "-m elf_x86"我不知道需要编辑哪个文件来重新定义make的行为。

答案1

您需要编辑您自己的模块 makefile。

内核构建 makefile 与常规 makefile 略有不同:目标需要是modules,而不是模块的名称(test),只需通过变量指定obj-m

obj-m += test.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

相关内容