Atravesse o módulo do kernel linux compilar

1

Eu estou olhando para cross compilação de um módulo do kernel para um Linux ARM.
A versão do kernel no meu host é 3.13.0-24generic, enquanto no alvo é 3.10.17-r0

Agora, quais fontes ou cabeçalhos do kernel eu realmente preciso baixar e instalar e onde? Eu baixei o linux-3.10.17tar.bz2 do kernel.org e o extraí. Nos drivers há um Makefile e de acordo com este site eu preciso acrescentar estas linhas a ele, então execute make:

ARCH=arm
CROSS_COMPILE=arm-poky-linux-gnueabi-gcc
KDIR := /lib/modules/'uname -r'/build

obj-m +=test5.o
all : 
    make -C ${KDIR}/build M=$(PWD) modules 

clean   : 
    make -C ${KDIR}/build M=$(PWD) clean 

Mas o que devo substituir uname -r ? Porque isso me daria a versão do kernel do meu host. Mas minha versão de destino é diferente. Onde está a pasta /lib/modules/3.6.9 ? CROSS_COMPILE e ARCH estão definidos.

    
por parvathy 25.01.2017 / 06:44

1 resposta

1

Para fazer a compilação cruzada do módulo do kernel Linux, o Makefile deve estar ciente do kernel do Linux na máquina alvo, que no seu caso é 'KDIR'. Configure o KDIR para o endereço onde o kernel do Linux da máquina alvo está armazenado.

A segunda coisa que o Makefile precisa estar ciente é o CROSS_COMPILER e o ARCH. Você não precisa configurá-los no Makefile. Basta passá-los como argumentos ao executar make :

make CROSS_COMPILE=arm-poky-linux-gnueabi-  ARCH=arm
    
por 14.02.2017 / 10:33