Сбои компиляции модуля ядра (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поведение.

0
задан 23 May 2017 в 15:39

1 ответ

Необходимо отредактировать собственный make-файл модуля.

make-файлы сборки Ядра немного отличаются от регулярных make-файлов: цель должна быть modules, не название Вашего модуля (test), который только должен быть определен через obj-m переменная:

obj-m += test.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
2
ответ дан 23 May 2017 в 15:39

Другие вопросы по тегам:

Похожие вопросы: