A compilação do módulo do kernel falha (gcc: error: elf_x86_64: Nenhum arquivo ou diretório)

0

Estou tentando compilar um módulo de kernel simples, mas a compilação falha devido a um argumento incorreto passado por make to gcc .

Este é o Makefile :

obj-m += test.o

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

A execução de make produz os seguintes erros:

$ 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

Este resposta não ajuda: pesquisei todos os arquivos em /usr para aqueles que contêm -m elf_x86 usando grep -rnw '/usr' -e "-m elf_x86" e não há correspondências de arquivo, por isso não tenho ideia sobre qual arquivo preciso editar para redefinir make comportamento.

    
por kos 28.03.2015 / 13:00

1 resposta

2

Você precisa editar seu próprio makefile de módulo.

Makefiles de construção do kernel são um pouco diferentes dos makefiles regulares: o destino precisa ser modules , não o nome do seu módulo ( test ), que precisa ser especificado apenas pela variável obj-m :

obj-m += test.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
    
por steeldriver 28.03.2015 / 14:10